EclipseLink/JPA @OneToMany Backpointer Erreur de Cardinalité

Je suis en train de générer une unidirectionnel un-à-plusieurs mappage entre les deux entités JPA. Dans mon ChatRoom classe, j'ai un Vector<User> type d'objet qui représente Users dans un ChatRoom. Je suis en train de créer un un-à-plusieurs de cartographie, basé sur userId (dans le User classe). Voici mon exemple de code:

@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
}

Ici est la classe d'Utilisateur:

@Entity
public class User {
    @Id
    @GeneratedValue
    private int userID;

    private String username;

    //Getter/Setter section
}

Quand j'essaie de générer les tables de ces entités dans Eclipse, j'obtiens 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 pour votre aide.

  • link contient une réponse sur la façon de le faire à l'aide d'un @JoinTable, mais dans mon cas, j'obtiens l'erreur suivante: Exception Description: The attribute [users] is not declared as type ValueHolderInterface, but its mapping uses indirection. Mapping: org.eclipse.persistence.mappings.UnidirectionalOneToManyMapping[users]
InformationsquelleAutor Nick Ruiz | 2011-02-06