J'essaie de générer un mappage unidirectionnel un-à-plusieurs entre deux entités JPA. Dans ma classe ChatRoom
, j'ai un objet de type Vector<User>
qui représente User
s dans un ChatRoom
. J'essaie de créer un mappage un-à-plusieurs, basé sur userId
(dans la classe User
). Voici mon exemple de code:EclipseLink/JPA @OneToMany Erreur de cardinalité dans le Backpointer
@Entity
public class ChatRoom {
@Id
@GeneratedValue
private int chatRoomID;
@OneToMany(mappedBy="userID")
private Vector<User> users;
// A no-argument constructor is required for EclipseLink to instantiate the persistence object properly.
public ChatRoom() {}
// Getter/Setter section
}
Voici la classe User:
@Entity
public class User {
@Id
@GeneratedValue
private int userID;
private String username;
// Getter/Setter section
}
Lorsque je tente de générer les tables de ces entités dans Eclipse, je reçois l'erreur suivante:
Internal Exception: javax.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [ChatJPA] failed.
Internal Exception: Exception [EclipseLink-7244] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.ValidationException
Exception Description: An incompatible mapping has been encountered between [class iosoa.entity.ChatRoom] and [class iosoa.entity.User]. This usually occurs when the cardinality of a mapping does not correspond with the cardinality of its backpointer.
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:126)
Avez-vous des idées sur la façon de résoudre ce problème? Merci de votre aide.
[link] (http://stackoverflow.com/questions/3515756/unidirectional-relationship-in-entity-bean-jpa) contient une réponse sur la façon de le faire en utilisant un @JoinTable, mais dans mon cas, je obtenez l'erreur suivante: 'Exception Description: L'attribut [users] n'est pas déclaré comme type ValueHolderInterface, mais son mappage utilise l'indirection. Mapping: org.eclipse.persistence.mappings.UnidirectionalOneToManyMapping [users] ' –