Hibernate Mappé Superclasse des relations et dominante
J'ai un résumé MappedSuperClass, Participant, qui est prolongé de trois types de "Participant". Chacun utilise ensuite son propre genre de "Projet", également un résumé MappedSuperClass. Cependant, je veux la classe de base pour en savoir plus sur les Projets afin que je puisse écrire du code générique pour interagir avec les Participants. Comment puis-je spécifier en utilisant Hibernate annotations? et comment vais-je le remplacer dans la ExtendedParticipant et ExtendedProject classes?
Chaque type de Participant, et chaque type de Projet, ont leurs propres tables de base de données avec les données existantes et les id (pas unique sur les tables) que je ne peux pas changer.
Le code suivant me donne l'IDE d'erreur "Beaucoup d'un attribut ne devrait pas être Mappé Superclasse'".
@MappedSuperclass
public abstract class Participant implements Persistable {
...
@ManyToOne
@JoinColumn(name = "project_id")
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
...
}
et le Projet de classe qui est un peu la même chose avec le même problème:
@MappedSuperclass
public abstract class Project implements Persistable {
...
@OneToMany
public List<Participant> getParticipants() {
return participants;
}
public void setProject(List<Participant> participants) {
this.participants = participants;
}
...
}
OriginalL'auteur Andrew | 2010-07-12
Vous devez vous connecter pour publier un commentaire.
Mappé avec une super-classe n'est pas une Entité, il ne peut pas faire partie d'une association. Afin de cartographier vos classes d'entités et de leur présenter un mappé superclasse "au-dessus", ou utiliser un
TABLE_PER_CLASS
stratégie.Voir aussi
Eh bien, pourquoi sont-ils mappés super-classe? Ne pouvez-vous pas mettre les propriétés communes à une classe au-dessus d'eux? Un autre "option" serait à la carte comme des entités et de l'utilisation d'un TABLE_PER_CLASS stratégie.
Le 3 ExtendedParticipant classes partagent de nombreux noms de champ, donc je l'avais espéré pour mettre tout cela dans la classe de base, qui est pourquoi j'ai choisi un Mappé de la Superclasse. Je suppose que je pourrais avoir une classe de base avec aucun mappage, mais alors que j'aurais à inclure tous les champs dans chaque ExtendedParticipant...
OriginalL'auteur Pascal Thivent
Semble possible d'avoir des relations définies par l'mappedsuperclass
selon les
OriginalL'auteur roshi