2013-05-07 165 views
0

JPA,Hibernate中,一對多映射問題JPA,Hibernate中,一對多映射

由於父:

@Entity 
public class Discount { 

@Id 
private String id; 

@Column(nullable = false) 
private String userName; 

@Column(nullable = false) 
private String iDocId; 

@Column(nullable = false) 
private Date creationTime; 

@Column(nullable = false) 
private String salesOrganization; 

......... 

@OneToMany(cascade = CascadeType.ALL, mappedBy = "discount") 
private Set<DiscountConditionScale> conditionScales = new HashSet<DiscountConditionScale>(); 
......... 

}

和兒童:

@Entity 
public class DiscountConditionScale { 

@Id 
@ManyToOne 
private Discount discount; 

private BigDecimal quantity; 

private BigDecimal rate; 
....... 

}

我會l ike擁有DiscountConditionScale的關鍵(折扣,費率,數量)。我如何實現這一目標?

非常感謝

回答

0

您在3個屬性上添加@Id註釋。

如果實體比關係表以上(它擁有附加屬性),我會建議使用EmbeddedId代替

+0

非常感謝!這就是訣竅! – Marcin 2013-05-07 15:23:16

0

你可能只需要一個約束:

@UniqueConstraint(COLUMNNAMES = {「打折」,‘速度’,‘量’})

但是如果你想組合鍵也一樣,在diferent類的按鍵映射,並把它作爲DiscountConditionSale關鍵:

http://j2eereference.com/2011/01/implementing-composit-primary-key-with-jpa-and-hibernate/

+0

我剛剛添加了@UniqueConstraint,但它已被忽略。 – Marcin 2013-05-07 15:24:43

+0

當然,它是...... hibernate必須爲要創建的約束創建表格,或者手動創建它們。 – Ziul 2013-05-07 15:33:30