[jboss-user] [EJB 3.0] - List and @OneToMany relationships in EJB3

dkoslu@cleartalk.net do-not-reply at jboss.com
Mon Nov 20 15:03:20 EST 2006


(I'm reposting this from the "Design of EJB 3.0" forum)

With EJB 3.0 I am trying to persist classes that use Lists (ie, an order preserving collection) using a "JoinTable".

Eg, I want a class A to contain a list of instances of class B:

class A {
List< B> list;
}

class B {
//whatever
}

If I specify a @OneToMany annotation on "list", then the generated schema is 3 tables: A, B, and A_B where A_B has 2 columns: a (non-unique) foreign key reference to A, and a foreign key reference to B.

This is fine for Collections of course but how is the list ordering preserved? I would expect a 3rd column called "position" or "index" to sort on.

I tried it with JBoss and the packaged HSQL database using a @OneToMany annotation (with defaults), and my simple tests seemed to work, that is, list order was preserved.

But I suspect the only reason that it worked is because JBoss is relying on the database to retrieve the rows in the same order it persists them, which is a bad assumption. I think the SQL standard says you can not rely on any particular ordering in a general select statement.

At least I don't see how else it works.

Is this the case?

I saw a very old post (2004) by Bill Burke that said JBoss's EJB3 doesn't support Lists yet, but I also read in his new EJB 3.0 book that it does.

I'm afraid to rely on Lists persisting/retrieving correctly.

Perhaps there is a way I can manually specify a sort column in the join table through @JoinTable or some other annotations..?

I can also resort to manually adding and maintaining a sortable "index" field to class B, and using @OrderBy, but that is not always practical (nor correct).

thanks -dk


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3987395#3987395

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3987395



More information about the jboss-user mailing list