@Entity ne reconnaît pas le @Id dans une @MappedSuperclass
Je suis d'essayer de créer une classe de base pour un ensemble d'entités afin de réduire l'effort de codage et de duplication. Ma pensée est que la classe de base a la commune de champs de métadonnées, et les classes enfant à composer avec leurs attributs uniques.
Ma classe de base:
@MappedSuperclass
public abstract class FinanceEntityBean {
protected Long id;
@Version
private long version;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(final Long id) {
this.id = id;
}
}
La première entité:
@Entity
@Table(name = "tag")
public class Tag extends FinanceEntityBean {
}
J'ai écrit des tests à l'aide de ce code pour faire du CRUD fonctions sur l'Étiquette d'entité, et ils sont tous fonctionne bien.
Ma question est, pourquoi ne Eclipse (Indigo) insistent pour que Tag
a une erreur:
The entity has no primary key attribute defined
J'ai modifié cela pour un avertissement pour l'instant donc mon code compile, mais je suis curieux de savoir pourquoi Eclipse n'est pas heureux, et si j'ai mal compris quelque chose.
Est-ce valable JPA 2.0 code? Hibernate 4.1.5 est mon fournisseur JPA.
source d'informationauteur Jay | 2012-08-27
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation mixte d'accès, vous devez spécifier le type d'accès. Voir Eclipse Dali bug 323527 pour donner une meilleure erreur de validation lorsque les deux champs et les propriétés sont annotés.
Option 1 : Annoter le getVersion() la méthode au lieu de cela, seules les propriétés sont annotés.
Option 2 : Spécifier mixte type d'accès comme suit:
Si
FinanceEntityBean
est défini dans un autre projet Eclipse à partir deTag
vous souffrez peut-être de l'Dali bug "Aucun attribut de clé primaire dans d'autres plug-in de projet".La solution de contournement est de liste
FinanceEntityBean
dans lepersistence.xml
fichier associé àTag
.Je suis assez certain que ceux-ci sont valides mappages.
La JPA 2.0 spécification fournit cet exemple, lorsque l'on parle de MappedSuperClasses (section 2.11.2):
J'ai eu le même problème, mais pour une raison différente, mais je ne le savais pas. Dans d'autres recherches, j'ai trouvé que dans mon cas, j'ai eu la MappedSuperclass dans un autre bocal. En fonction de l'Utilisateur de Gaz https://stackoverflow.com/users/3701228/gas:
", Selon JPA spec, si vous avez jpa classes distinctes jar, vous devez l'ajouter à la persistence.xml (je ne sais pas, si Hibernate exige que, mais vous pouvez lui donner un essai). Essayez d'ajouter l'entrée suivante à votre persistence.xml entity.jar"
Il des références quel est le bon chemin pour désigner un fichier jar dans jpa persistence.xml dans une application web? qu'une description sur la façon de le faire.