2013-05-07 4 views
0

JPA, Hibernate, OneToMany проблема отображения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; 
....... 

}

Я бы ike иметь ключ DiscountConditionScale (скидка, курс, количество). Как мне это достичь?

Большое спасибо

ответ

0

добавить аннотацию @Id на 3 атрибутов.

Если объект больше, чем таблицы соотношения (он имеет дополнительные атрибуты) я бы посоветовал использовать EmbeddedId вместо

+0

спасибо! Это был трюк! – Marcin

0

Вы, наверное, просто нужен Ограничить:

@UniqueConstraint (columnNames = { «скидка »,„скорость“,„количество“})

Но если вы хотите, составной ключ тоже карту ключи в классе Diferent и использовать его в качестве ключа для DiscountConditionSale:

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

+0

Я добавил именно этот @UniqueConstraint, но он был проигнорирован. – Marcin

+0

Конечно, это ... hibernate должен создать таблицу для создаваемых ограничений или создать их вручную. – Ziul

Смежные вопросы