2016-04-23 18 views
1

Ich arbeite, um die neuen Funktionen von JPA 2.1 mit Feder ex erkunden. EntityGraph-Funktion, indem eine Beispiel-CRUD-Operation anhand von Beispielbeziehungen zwischen Produkten, Bestell- und Bestellpositionen erstellt wird.Jpa-Entity-Graph mit Hinweisen und benannte Abfrage

unten ist der Code ich für die Hauptbohne, definiere ich eine benannte Abfrage alle Daten abzurufen, und Entity-Graph

@Entity 
@Table(name = "purchase_order") 
@NamedQueries({ 
@NamedQuery(name = "Order.findAll", query = "SELECT o FROM Order o")}) 
@NamedEntityGraph(name = "graph.Order.items", attributeNodes =  @NamedAttributeNode(value = "items", subgraph = "items"), 
subgraphs = @NamedSubgraph(name = "items", attributeNodes = @NamedAttributeNode("product"))) 

public class Order implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "id", updatable = false, nullable = false) 
private Long id = null; 

@Version 
@Column(name = "version") 
private int version = 0; 

@Column 
private String orderNumber; 

@OneToMany(mappedBy = "order", fetch = FetchType.LAZY) 
private Set<OrderItem> items = new HashSet<OrderItem>(); 
... getter and setter methods 

Ich versuche, die benannte Abfrage und die Grafik zu nennen von der DAO-Methode habe ich als die folgende

public List<Order> getOrderDetails() { 
    return (List<Order>) entityManager.createNamedQuery("Order.findAll").setHint("javax.persistence.loadgraph", 
      entityManager.getEntityGraph("graph.Order.items")).getResultList(); 
} 

das Ergebnis der DAO-Methode gibt Null-Index aufrufen, obwohl die Datenbank viele Zeilen, obwohl ich versucht, Hinweise enthält zu ändern zwischen "javax.persistence.fetchgraph" und "javax.persistence.loadgraph" bitte beraten.

Antwort

0

Ich fand das Problem selbst, Entschuldigung, als ich entdeckte, dass der Block von Kabeljau oben ist gut der Graph und der Untergraph sind gut definiert, aber hbm2ddl ließ meine Daten fallen, da sein Wert erstellt wurde, die es die Dummy-Daten aus dem entfernt Datenbank zum Löschen und neu erstellen.

<property name="hibernate.hbm2ddl.auto" value="create"/> 
Verwandte Themen