0

JPA、Hibernate、OneToMany 映射问题

给定父母:

@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;
.......

}

我想让 DiscountConditionScale 的键为(折扣、费率、数量)。我该如何做到这一点?

非常感谢

4

2 回答 2

0

您在 3 个属性上添加 @Id 注释。

如果您的实体不仅仅是一个关系表(它包含其他属性),我建议您改用EmbeddedId

于 2013-05-07T15:13:14.800 回答
0

您可能只需要一个约束:

@UniqueConstraint(columnNames = { "折扣", "价格", "数量" })

但是,如果您也想要复合键,请将键映射到不同的类中并将其用作 DiscountConditionSale 的键:

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

于 2013-05-07T15:17:02.263 回答