2013-08-19 8 views
1

J'utilise Kundera avec Mongo et Play 2.1.3. Mon application a une entité Utilisateur et une entité Document. L'utilisateur a plusieurs documents (oneToMany) et un document appartient à un utilisateur. Je crée d'abord et persiste l'utilisateur et les documents peuvent être ajoutés à cet utilisateur. Lorsque je crée un document et que je le conserve, l'ID utilisateur qui fait référence à l'utilisateur est différent de l'ID utilisateur de l'entité utilisateur. Et les documents utilisateur ArrayList est également toujours null.Kundera & MongoDB (dans Play 2.1.3) relation bidirectionnelle ne sont pas référencés correctement sur le DB

So here's relevant parts of my entities: 

@Entity(name="User") 
@Table(name="User", schema="[email protected]") 
public class User { 

    @GeneratedValue 
    @Id 
    @Column(name="_id") 
    private String userID; 

    @Required 
    @Column(name="name") 
    private String name; 
    (...) 

    @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy="owner") 
    private List<Document> documents; 
    (...) 
} 


@Entity(name="Document") 
@Table(name="Document", schema="[email protected]") 
public class Document { 

    @GeneratedValue 
    @Id 
    @Column(name="_id") 
    private String documentID; 

    @Required 
    @Column(name="name") 
    private String name; 

    (...) 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name="userID") 
    private User owner; 
    (...) 
} 

-- 

The user is created and persisted. The documents are created afterwards with something like the following: 

public static void createDocument(String name, User user) { 
EntityManagerFactory emf = Application.getEmf(); 
    Document document = new Document(); 
    document.setName(name); 
    ... 
    EntityManager em = emf.createEntityManager(); 
    document.setOwner(user); 
    em.persist(document); 
    em.close(); 
} 

In the db: 
db.User.find() 
{ "_id" : "5211067576aae40da0595eb0", "name" : "Name of the user" (...) } 

db.Document.find() 
{ "_id" : "52113c1376aae337b4537028", "name": "name", "userID" : "52113c1376aae337b4537029" } 

I was expecting the userID in the document to be the same as the User _id. 
As I said when I try to access the user's documents ArrayList it's always null. 

What am I doing wrong here? :) 
Thanks in advance. 

Répondre

0

Répondu sur le groupe kundera-discuss.

Questions connexes