I have experence a problem while mapping a legacy database when I am attempt to 
use @ManyToOne using @JoinTable and the parent class is declaired with 
@Inheritance(strategy=InheritanceType.JOINED).  Here is a simplified version of 
what I am attempting:
@Entity
  | @Inheritance(strategy=InheritanceType.JOINED)
  | @Table(name = "baseclass")
  | public abstract class Baseclass implements java.io.Serializable {
  |     
  |     private String internalid;
  |     
  |     @Id
  |     @Column(name = "INTERNALID", unique = true, nullable = false, 
insertable = true, updatable = true, length = 34)
  |     public String getInternalid() {
  |             return this.internalid;
  |     }
  |     public void setInternalid(String internalid) {
  |             this.internalid = internalid;
  |     }
  | }

@Entity
  | @Table(name = "parent")
  | public class Parent extends Baseclass
  | {
  | 
  |     private String name;
  | 
  |     public String getName(){
  |             return this.name;
  |     }
  |     public void setName(String name){
  |             this.name = name;
  |     }
  | }

@Entity
  | @Table(name = "child")
  | public class Child implements java.io.Serializable {
  | 
  |         private String internalid;
  |     private String name;
  |     private Parent parent;
  | 
  |     @Id
  |     @Column(name = "INTERNALID", unique = true, nullable = false, 
insertable = true, updatable = true, length = 34)
  |     public String getInternalid() {
  |             return this.internalid;
  |     }
  |     public void setInternalid(String internalid) {
  |             this.internalid = internalid;
  |     }
  | 
  |     public String getName(){
  |             return this.name;
  |     }
  |     public void setName(String name){
  |             this.name = name;
  |     }
  | 
  |     @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
  |     @JoinTable(name="hierarchy",
  |             joinColumns = @JoinColumn( name="childinternalid"),
  |             inverseJoinColumns = @JoinColumn( name="parentinternalid")) 
  |     public Parent getParent(){
  |             return this.parent;
  |     }
  |     public void setParent(Parent parent){
  |             this.parent = parent;
  |     }
  | }

When I try this in JBOSSAS4.0.4GA I receive the following error:
14:24:09,268 ERROR [AssertionFailure] an assertion failure occured (this may 
indicate a bug in Hibernate, but is more likely due to unsafe use of the 
session)
  | org.hibernate.AssertionFailure: Table hierarchy not found
  |     at 
org.hibernate.persister.entity.JoinedSubclassEntityPersister.getTableId(JoinedSubclassEntityPersister.java:444)
  |     at 
org.hibernate.persister.entity.JoinedSubclassEntityPersister.<init>(JoinedSubclassEntityPersister.java:225)
  |     at 
org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:58)
  |     at 
org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:223)
  |     at 
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1213)
  |     at 
org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:631)
  |     at 
org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:760)
  |     at 
org.hibernate.ejb.Ejb3Configuration.createContainerEntityManagerFactory(Ejb3Configuration.java:350)
  |     at 
org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:119)
  |     at 
org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:264)
  |     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:585)
  | 
  | ...

If I switch the association to @OneToMany on the parent side there is no error.

I have also experenced this same error using bidirectional @OneToOne with an 
association table where either end is using 
@Inheritance(strategy=InheritanceType.JOINED), and if I make it unidirectional 
on the end without @Inheritance(strategy=InheritanceType.JOINED) it does not 
throw the error.

I'm not sure what I am doing wrong, and thanks for all the help this forum 
gives me.

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

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


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to