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.