[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - @GeneratedValue in mappedSuperclass problem
hoeft
do-not-reply at jboss.com
Thu Nov 16 06:20:03 EST 2006
Hi!
Many of my entities have an id of type long. So I put the code (getters, setters ...) into an superclass. After I did it, the id wasn't initialized by hibernate any more, if I persisted an entity. Thats very strange.
Here is the code:
| public class GenerateValueTestcase extends TestCase {
|
| @MappedSuperclass
| public static abstract class EntityWithIntId {
|
| private long id = -1;
|
| @Id
| @GeneratedValue(strategy = GenerationType.AUTO)
| public long getId() {
| return id;
| }
|
| public void setId(long id) {
| this.id = id;
| }
| }
|
| @Entity
| public static class TestEntity extends EntityWithIntId implements Serializable {
|
| private static final long serialVersionUID = 1L;
|
| }
|
| public void testGeneratedIds() {
|
| TestStarterRemote bean = UsefullFunctions.getTestStarterRemote();
|
| Set<Long> ids = new HashSet<Long>();
|
| final int NO_ENTITIES = 10;
|
| for (int i = 0; i < NO_ENTITIES; i++) {
| EntityWithIntId entity = new TestEntity();
| entity = bean.merge(entity);
| ids.add(entity.getId());
| }
|
| assertEquals("Each entity must have an unique id", NO_ENTITIES, ids
| .size());
|
| }
|
| }
|
The bean.merge method:
| public <T> T merge(T o) {
| return entityManager.merge(o);
| }
|
Any ideas or workarounds? Copying the code into each class is not the best idea I think....
Thanks for your help
Meinert
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3986474#3986474
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3986474
More information about the jboss-user
mailing list