2017-06-16 16 views
-1

私に正しく教えてくださいgetOrders()を呼び出すと、完全なSetを返す必要があることを理解していますか?Hibernate @OneToMany空集合

受注テーブルのFK。

Ordersオブジェクトを取得するためにHQL(JPQL)を使用するだけですか?

私は空のセットになっています。 getterを呼び出すと、orderSet = bid.getOrders();がセットされます。デバッグでは何も表示されません。

@Entity 
@Table(name = "bid") 
public class Bid { 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long id; 
@OneToMany(mappedBy = "bid_id",cascade = CascadeType.ALL,fetch = FetchType.EAGER) 
private Set<Order> orders = new HashSet<>(); 
@Column(name = "title") 
private String title; 
@Column(name = "description") 
private String description; 


public Set<Order> getOrders() { 
    return orders; 
} 

public void setOrders(Set<Order> orders) { 
    this.orders = orders; 
} 

@Entity 
@Table(name = "orders") 
public class Order { 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private long id; 
@Column(name = "title") 
private String title; 

@ManyToOne(optional = true,fetch = FetchType.EAGER,cascade = 
CascadeType.ALL) 
@JoinColumn(name = "bid") 
private Bid bid_id; 

@Repository 
@Transactional 
public class BidDao { 

@PersistenceContext 
private EntityManager entityManager; 

public void create(Bid bid){ 
    entityManager.persist(bid); 
} 

}

+0

はい、それは完全なセットを返す必要があります。あなたがDAOレベルでビットを取得する方法を示していますか? – xyz

+0

mmm、daoでは作成のみを行いますが、コントローラでgetterコールを設定します。 orderSet = bid.rr(); –

+0

'Entity'のCreate/Read/Update/Delete操作は' Controller'ではなく 'Repository'になければなりません。 –

答えて

0

多くから片側に多くの側面

@OneToMany (targetEntity = Order.class, cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER) 

@JoinColumn (name = "order_id", referencedColumnName = "id") 
  • に一つからこの

    • を試してみてください

      @ManyToOne(targetEntity = Bid.class, optional = true,fetch = FetchType.EAGER,cascade = 
           CascadeType.ALL) 
      
      @JoinColumn(name = "order_id", referencedColumnName = "id") 
      
  • 関連する問題