2016-04-23 29 views
1

我正在努力探索JPA 2.1的新功能, EntityGraph功能通過使用產品,採購訂單和訂單項目之間的樣本關係進行樣本CRUD操作。帶有提示和命名查詢的Jpa實體圖形

下面我主做豆腐的代碼,我定義了一個命名查詢檢索所有數據,以及實體圖形

@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 

我想打電話給命名查詢和圖形從DAO方法我已經爲下

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

雖然數據庫包含許多行,雖然我試圖改變提示調用DAO方法的結果返回零指數在「javax.persistence.fetchgraph」和「javax.persistence.loadgraph」之間請指教。

回答

0

我自己發現了這個問題,對不起,我發現上面的cod塊很好,圖和子圖都很好定義,但是hbm2ddl正在刪除我的數據,因爲它的值是創建的,使得它可以從數據庫刪除並重新創建它。

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