Hey Guillaume, I think I have properly fixed the issue. Can you test and review the pull request https://github.com/hibernate/hibernate-ogm/pull/141 ? Sanne it would be useful for you to check it out too.
Emmanuel On Tue 2012-09-25 9:58, Emmanuel Bernard wrote: > Let me investigate this further first. Ideally the engine would use the right > column names ie the fk and not the ones from the entity ids. > I must have messed up when I fixed the bug I discussed with you. > > On 24 sept. 2012, at 20:20, Guillaume SCHEIBEL <guillaume.schei...@gmail.com> > wrote: > > > Hi guys, > > > > I'm working on OGM-236 which consists to use by default the IN_ENTITY mode > > for association storage strategy instead of COLLECTION. > > I've just found out a little issue, when we use @JoinColumns over a > > @OneToMany property to map an @EmbeddedID with the IN_ENTITY mode, the > > navigation information are not stored directly into the document itself but > > another document composed by the join columns as the _id and the navigation > > information (in that case the IDs that the entity is related to). > > > > Concretely, let's starting from this mapping: > > https://github.com/hibernate/hibernate-ogm/blob/master/hibernate-ogm-core/src/test/java/org/hibernate/ogm/test/id/Label.java > > https://github.com/hibernate/hibernate-ogm/blob/master/hibernate-ogm-core/src/test/java/org/hibernate/ogm/test/id/News.java > > https://github.com/hibernate/hibernate-ogm/blob/master/hibernate-ogm-core/src/test/java/org/hibernate/ogm/test/id/NewsID.java > > > > and run this test with the IN_ENTITY mode on (to make the switch, a > > modification into MongoDBDatastoreProvider.configure() is needed) > > https://github.com/hibernate/hibernate-ogm/blob/master/hibernate-ogm-core/src/test/java/org/hibernate/ogm/test/id/CompositeIdTest.java > > > > > > We can expect to have something like: > > > > { > > "_id": { > > "author": "Guillaume", > > "title": "There are more than 20 JUGs in France" > > }, > > "content": "Great! Congratulations folks", > > "labels": [ > > > > { "id": NumberLong(5) } > > > > ] > > > > } > > > > It means this News is related to 1 Label of which ID is 5. > > But due to @JoinColumns we got this (both documents are from the News > > collection): > > > > { > > "_id": { > > "author": "Guillaume", > > "title": "There are more than 20 JUGs in France" > > }, > > "content": "Great! Congratulations folks", > > "labels": [] > > } { > > "_id": { > > "news_author_fk": "Guillaume", > > "news_topic_fk": "There are more than 20 JUGs in France" > > }, > > "labels": [{ > > "id": NumberLong(5) > > }] > > } > > > > Of course at the loading, when the News seems not related to any Label > > because the "labels" field is empty. > > A workaround it to change the @JoinColumns from: > > > > @JoinColumns({@JoinColumn(name="news_topic_fk", referencedColumnName = > > "newsid.title", nullable = false) , > > @JoinColumn(name="news_author_fk", referencedColumnName = > > "newsid.author", nullable = false)}) > > private List<Label> labels; > > > > @JoinColumns({@JoinColumn(name="title", referencedColumnName = > > "newsid.title", nullable = false) , > > @JoinColumn(name="author", referencedColumnName = > > "newsid.author", nullable = false)}) > > private List<Label> labels; > > > > Note that the new value of each @JoinColumn's name is the same as > > referenced property from the @Embedded entity. > > > > I see there are 2 fix possible for this issue: > > - we can say in case of IN_ENTITY mode don't use @JoinColumns' name to > > store the navigation property but the property from the referenced > > column. > > - at the loading, we can check also the documents created due to > > @JoinColumns > > > > Personally, I would tend to the first approach which is more natural > > in terms of storage and more readable. > > > > What do you think ? > > Let me know if you need more information. > > > > Guillaume > > _______________________________________________ > > hibernate-dev mailing list > > hibernate-dev@lists.jboss.org > > https://lists.jboss.org/mailman/listinfo/hibernate-dev > > _______________________________________________ > hibernate-dev mailing list > hibernate-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/hibernate-dev _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev