2013-05-07 5 views
0

JPA, Hibernate, problème de cartographie OneToManyJPA, Hibernate, cartographie OneToMany

Étant donné le parent:

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

}

et l'enfant:

@Entity 
public class DiscountConditionScale { 

@Id 
@ManyToOne 
private Discount discount; 

private BigDecimal quantity; 

private BigDecimal rate; 
....... 

}

Je voudrais Ike pour avoir la clé de DiscountConditionScale soit (remise, taux, quantité). Comment puis-je y parvenir?

Un grand merci

Répondre

0

vous ajoutez l'annotation @Id sur les 3 attributs.

Si votre entité est plus qu'une table de relation (il contient des attributs supplémentaires) Je vous conseille d'utiliser un EmbeddedId à la place

+0

Merci beaucoup! C'était le truc! – Marcin

0

Vous avez probablement juste besoin d'un Contraindre:

@UniqueConstraint (columnNames = { « discount », « taux », « quantité »})

Mais si vous voulez que la clé composite aussi, la carte les clés dans une classe diferent et l'utiliser comme la clé pour DiscountConditionSale:

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

+0

J'ai ajouté exactement ce @UniqueConstraint mais il a été ignoré. – Marcin

+0

Bien sûr que c'est ... hibernate doit créer la table pour que les contraintes soient créées ou que vous les créiez manuellement. – Ziul