Bonjour bonjour,
J'ai une erreur lors de tentative de génération d'un script sql à partir des entités, et quand je cherche sur notre moteur de recherche favoris, je trouve des solutions qui ne correspondent pas à mon cas (enfin je pense):
Sauf que, dans la classe CoreTap, l'attribut EmbeddedId est bel et bien sur le getter, et non sur le champ:The embeddable class [com.areva.td.acts.entities.CoreTapId] is used in classes with conflicting access types. Class [com.areva.td.acts.entities.TapLinear] uses access [PROPERTY] and class [com.areva.td.acts.entities.CoreTap] uses access [FIELD]. When sharing an embeddable object between classes, the access types of those embedding class must be the same.
Quand j'essaie de rajouter @Access(AccessType.PROPERTY) sur la classe CoreTapId (méthode que j'ai pu voir dans quelques exemples sur le net):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 @Entity @Table(name = "T_CORE_TAP", uniqueConstraints = {}) public class CoreTap implements java.io.Serializable { //... private CoreTapId id; //... @AuditElement(order = 0) @EmbeddedId @AttributeOverrides({ @AttributeOverride(name = "nmCore", column = @Column(name = "NM_CORE", unique = false, nullable = false, insertable = true, updatable = true, precision = 2, scale = 0)), @AttributeOverride(name = "nmTap", column = @Column(name = "NM_TAP", unique = false, nullable = false, insertable = true, updatable = true, precision = 1, scale = 0)), @AttributeOverride(name = "dcQuotationNumber", column = @Column(name = "DC_QUOTATION_NUMBER", unique = false, nullable = false, insertable = true, updatable = true, length = 8)), @AttributeOverride(name = "dcQuotationItem", column = @Column(name = "DC_QUOTATION_ITEM", unique = false, nullable = false, insertable = true, updatable = true, length = 5)) }) public CoreTapId getId() { return this.id; } //... }
J'ai l'erreur suivante (toujours lors de la generation des tables à partir des entités):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @Embeddable @Access(AccessType.PROPERTY) public class CoreTapId implements java.io.Serializable { //...
Entity class [class com.areva.td.acts.entities.CoreTap] has no primary key specified. It should define either an @Id, @EmbeddedId or an @IdClass. If you have defined PK using any of these annotations then make sure that you do not have mixed access-type (both fields and properties annotated) in your entity class hierarchy.
Est-ce que quelqu'un a une idée?
Merci d'avance
Partager