Hello listers.

I have posted on this before. I got no replies, either here or over at
hibernate.org. So I parked the issue and moved on but now I have to deal
with it. Because of my limited Hibernate knowledge, I am not even really
sure of what things to try anymore. Can someone shed some light on this
problem for me?

I have two Objects, ObjectA and ObjectB. They have a ManyToMany relationship
with attributes, meaning they have a join table with IdObjectA and IdObjectB
as foreign keys and some attributes. As recommended by the Hibernate docs, I
create a class, AAndBJoin we'll call it. Here's what it all looks like:

public class ObjectA
{
  private Set<AAndBJoin> aAndBJoins;

  @OneToMany(mappedBy="ObjectA", fetch = FetchType.EAGER, cascade = {
CascadeType.ALL })
        public Set<AAndBJoin> getAAndBJoins ()

public class ObjectB
{
  private Set<AAndBJoin> aAndBJoins;

  @OneToMany(mappedBy="ObjectB")
        public Set<AAndBJoin> getAAndBJoins ()

public class AAndBJoin
{
        private ObjectA objectA;
        private ObjectB objectB;

@ManyToOne
@JoinColumn(name="idObjectA")
public ObjectA getObjectA()

@ManyToOne
@JoinColumn(name="idObjectB")
public ObjectB getObjectB()

The problem is that when I save an ObjectA, with its associated Set of
AAndBJoin Objects, ONLY inserts are done in the AAndBJoin table in the
database, any existing information is NOT being updated or deleted. So if I
start off with 2 AAndBJoin Objects and add 1, instead of having 3 I now have
5 because 3 inserts are performed, one for each AAndBJoin Object sent to the
FormController from the .jsp, but the original 2 are left untouched.

Do I have to play with the AAndBJoin Object, like add Cascade information or
something else? In the example there was none, and I have tried putting
Cascade.ALL for the two getters, no dice. Or perhaps I have to do something
manually, like call session.flush() or something, to get Hibernate to (worst
case scenario) delete the info in the AAndBJoin table first before
inserting? I am not sure even how to do this since Spring is in the mix. I
have tried debugging Hibernate to see what's going on but since Spring is
involved and uses Reflection and AopProxies and all kinds of stuff I haven't
a clue about, I never actually see any Hibernate code executed ...

I would really appreciate some help on this one!

Bob
-- 
View this message in context: 
http://www.nabble.com/Many-to-many-collection-problem-tf4670322s2369.html#a13341640
Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to