Hibernate version: 3.2 cr1
Hibernate annotations version: 3.1.0.Beta10b
When I attempt to persist my ParentOneToMany class (annotated below) I am seeing my defined sequence being ignored in favor of a SequenceHiLoGenerator value. From the logs I see the sequence being hit and a correct value returned, but it isn't being used. If I switch to using xml mapped classes the sequence is used as expected.
Any thoughts on why the sequence is being ignored when I use annotations?
Annotated Classes
Code:
@Entity
@Table(name="TblParentOneToMany")
@SequenceGenerator(name="ParentSeq", sequenceName="PARENT_SEQ")
public class ParentOneToMany
{
private long _id;
private String _name;
private Set<ChildOneToMany> _children;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="ParentSeq")
public long getId()
{
return _id;
}
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="parent")
@Cascade(value = {org.hibernate.annotations.CascadeType.ALL, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
public Set<ChildOneToMany> getChildren()
{
return _children;
}
... Other getter/setters removed for brevity ...
}
@Entity
@Table(name="TblChildOneToMany")
@SequenceGenerator(name="ChildSeq", sequenceName="CHILD_SEQ")
public class ChildOneToMany
{
private long _id;
private ParentOneToMany _parent;
private String _name;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="ChildSeq")
public long getId()
{
return _id;
}
@ManyToOne
@JoinColumn(name="parent_id")
public ParentOneToMany getParent()
{
return _parent;
}
... Other getter/setters removed for brevity ...
}
Code between sessionFactory.openSession() and session.close():Code:
ParentOneToMany parent = new ParentOneToMany();
parent.setName("Parent");
Set<ChildOneToMany> children = new HashSet<ChildOneToMany>();
for(int i = 1; i <= 5; i++)
{
ChildOneToMany child = new ChildOneToMany();
child.setName("Child" + i);
child.setParent(parent);
children.add(child);
}
parent.setChildren(children);
session.save(parent);
Log fileCode:
16:44:53,193 DEBUG DefaultSaveOrUpdateEventListener:161 - saving transient instance
16:44:53,193 DEBUG AbstractBatcher:358 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
16:44:53,193 DEBUG SQL:393 - select PARENT_SEQ.nextval from dual
16:44:53,193 DEBUG AbstractBatcher:476 - preparing statement
16:44:53,474 DEBUG SequenceGenerator:82 - Sequence identifier generated: 5
16:44:53,474 DEBUG AbstractBatcher:366 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
16:44:53,474 DEBUG AbstractBatcher:525 - closing statement
16:44:53,474 DEBUG SequenceHiLoGenerator:57 - new hi value: 5
16:44:53,490 DEBUG AbstractSaveEventListener:113 - generated identifier: 250, using strategy: org.hibernate.id.SequenceHiLoGenerator
TIA,
Brett