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):

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.
Sauf que, dans la classe CoreTap, l'attribut EmbeddedId est bel et bien sur le getter, et non sur le champ:
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;
    }
 
    //...
}
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
 
@Embeddable
@Access(AccessType.PROPERTY)
public class CoreTapId implements java.io.Serializable {
 
    //...
J'ai l'erreur suivante (toujours lors de la generation des tables à partir des entités):
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