The debug messages were not of little help, i'm afraid. It does say it found "3 new insertions", yet only the parent is saved to the DB.
However, I've noticed the problem only occurs if you add children before saving the parent. Namely:
The following works:
Code:
Department dept=new Department("d1");
Employee e1=new Employee(...)
Employee e2=new Employee(...)
session.save(dept); // Save parent first
dept. add (new Employee(...)) // Then add children
dept. add (new Employee(...))
session.save(e1); // save children (here, one is not taking
session.save(e2); // advantage of cascade-saving)
While the following fails if you use cascade=all (employees aren't saved):
Code:
Department dept=new Department("d1");
Employee e1=new Employee(...)
Employee e2=new Employee(...)
dept. add (new Employee(...)) // First add children
dept. add (new Employee(...))
session.save(dept); // Then save parent
session.save(e1); // shouldn't be required with cascade=all,
session.save(e2); // but id doesn't work even with explicit save
IMHO, that does indicate a problem: inconsistent behaviour is usually considered a bug.