Hello,

I've tried to implement composite pattern with EJB3, but it seems impossible.

This is my code :

1- parent class

  | @Entity
  |     @Table(name = "groupesetediteurs")
  |     @Inheritance(strategy = InheritanceType.JOINED)
  |     public abstract class EGroupesEtEditeurs
  |     implements Serializable {
  |   protected boolean isroot = false;
  |   private String nom = null;
  | 
  | 
  |   private List<EGroupesEtEditeurs> groupesEtEditeurs = new 
ArrayList<EGroupesEtEditeurs>();
  | 
  |   private int id;
  | 
  |   @Id(generate = GeneratorType.AUTO)
  |       public int getId() {
  |     return id;
  |   }
  | 
  | 
  | 
  |   public void setId(int id) {
  |     this.id = id;
  |   }
  | 
  |  
  |   public void add(EGroupesEtEditeurs ge)  {
  |     this.groupesEtEditeurs.add(ge);
  |   }
  | 
  |    public void del(EGroupesEtEditeurs ge) throws Exception {
  |     this.groupesEtEditeurs.remove(ge);
  |   }
  | 
  |    public void setNom(String nom){
  |     this.nom = nom;
  |   }
  | 
  |   private void setRoot(boolean isroot) {
  |     this.isroot = isroot;
  |   }
  | 
  |  
  |   public String getNom() {
  |     return nom;
  |   }
  | 
  |   
  |   @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
  |         @JoinTable(
  |                         [EMAIL PROTECTED](name="GroupesEditeurs"),
  |                         joinColumns = { @JoinColumn( name="parent_id") },
  |                         inverseJoinColumns = @JoinColumn( name="enfant_id")
  |         )
  |   public List<EGroupesEtEditeurs> getGroupesEtEditeurs(){
  |     return groupesEtEditeurs;
  |   }
  | 
  |  
  | 
  |   private void setGroupesEtEditeurs(List<EGroupesEtEditeurs> 
groupesEtEditeurs) {
  |     this.groupesEtEditeurs = groupesEtEditeurs;
  |   }
  | 
  | 
  |   public boolean isRoot() {
  |     return isroot;
  |   }
  | 
  | }
  | 


2- node class

  | @Entity
  | @Table(name = "groupedepresse")
  | public class EGroupeDePresse extends EGroupesEtEditeurs {
  | 
  |     public EGroupeDePresse() {}
  | 
  | 
  |     public EGroupeDePresse(String nom) throws Exception {
  |         this.setNom(nom);
  |     }
  | 
  | 
  |     public void add(EGroupesEtEditeurs ge) throws Exception {
  |         super.add(ge);
  |     }
  | 
  |     public void del(EGroupesEtEditeurs ge) throws Exception {
  |         super.del(ge);
  |     }
  | 
  |      public void setNom(String nom){
  |         super.setNom(nom);
  |     }
  | 
  | 
  |  
  |     public String getNom() {
  |         return super.getNom();
  |     }
  | 
  |  
  |     public List<EGroupesEtEditeurs> getGroupesEtEditeurs(){
  |         return super.getGroupesEtEditeurs();
  |     }
  | 
  |     public void makeRoot(){
  |       this.isroot = true;
  |     }
  | 
  |      public boolean isRoot() {
  |         return super.isroot;
  |     }
  | 
  | 
  | }
  | 


3- Leaf class


  | @Entity
  | @Table(name = "editeur")
  | public class EEditeur extends EGroupesEtEditeurs  implements Serializable{
  |   
  |     private List<ETitre> titres = new ArrayList<ETitre>();
  |     private ArrayList interlocuteurs = new ArrayList();
  | 
  |     public EEditeur() {}
  | 
  | 
  |     public EEditeur(String nom) throws Exception {
  |         this.setNom(nom);
  |     }
  | 
  | 
  |     public void add(EGroupesEtEditeurs ge) throws Exception {
  |         throw new Exception(
  |                 "Un Editeur ne peut pas posséder de Groupes ou d'Editeurs");
  |     }
  | 
  | 
  |     public void del(EGroupesEtEditeurs ge) throws Exception {
  |         throw new Exception(
  |                 "Un Editeur ne peut pas posséder de Groupes ou d'Editeurs");
  |     }
  | 
  | 
  |     public String getNom() {
  |         return super.getNom();
  |     }
  | 
  | 
  |     public void setNom(String nom){
  |         super.setNom(nom);
  |     }
  | 
  | 
  |     public List<EGroupesEtEditeurs> getGroupesEtEditeurs(){
  |         return super.getGroupesEtEditeurs();
  |     }
  | 
  |     public boolean isRoot() {
  |         return false;
  |     }
  | 
  |     @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
  |         @JoinTable(
  |                         [EMAIL PROTECTED](name="EditeurTitres"),
  |                         joinColumns = { @JoinColumn( name="editeur_id") },
  |                         inverseJoinColumns = @JoinColumn( name="titre_id")
  |         )
  |     public List<ETitre> getTitres() {
  |         return titres;
  |     }
  | 
  | 
  |         public void setTitres(List<ETitre> titres) {
  |             this.titres = titres;
  |     }
  | 
  |     public void addTitre(ETitre titre) {
  |         //ETitre.validation(titre);
  |         this.titres.add(titre);
  |     }
  | 
  |     public void delTitre(ETitre titre) {
  |         this.titres.remove(titre);
  |     }
  | 
  | 
  | }
  | 
  | 


4- and the error trace


  | WARN  [ServiceController] Problem creating service 
jboss.j2ee:service=EJB3,module=entites-produits.par
  | 
  | org.hibernate.MappingException: Could not determine type for: 
java.util.List, for columns: [org.hibernate.mapping.Column(groupesEtEditeurs)]
  | 
  |         at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:265)
  |         at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:252)
  |         at org.hibernate.mapping.Property.isValid(Property.java:175)
  |         at 
org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:330)
  |         at 
org.hibernate.mapping.JoinedSubclass.validate(JoinedSubclass.java:38)
  |         at org.hibernate.cfg.Configuration.validate(Configuration.java:815)
  |         at 
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:976)
  |         at 
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:178)
  |         at 
org.jboss.ejb3.entity.EntityManagerFactoryLoader.loadFactory(EntityManagerFactoryLoader.java:44)
  |         at 
org.jboss.ejb3.entity.EntityManagerFactoryLoader.loadFactory(EntityManagerFactoryLoader.java:31)
  |         at 
org.jboss.ejb3.Ejb3Module.initializeManagedEntityManagerFactory(Ejb3Module.java:290)
  |         at org.jboss.ejb3.Ejb3Module.createService(Ejb3Module.java:141)
  |         at 
org.jboss.system.ServiceMBeanSupport.jbossInternalCreate(ServiceMBeanSupport.java:233)
  |         at 
org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:215)
  |         at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
  |         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at 
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
  |         at 
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  |         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  |         at 
org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:950)
  |         at $Proxy0.create(Unknown Source)
  |         at 
org.jboss.system.ServiceController.create(ServiceController.java:342)
  |         at 
org.jboss.system.ServiceController.create(ServiceController.java:281)
  |         at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
  |         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at 
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
  |         at 
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  |         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  |         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
  |         at $Proxy10.create(Unknown Source)
  |         at org.jboss.ejb3.EJB3Deployer.create(EJB3Deployer.java:157)
  |         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)
  |         at 
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  |         at 
org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
  |         at 
org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
  |         at 
org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:80)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
  |         at 
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  |         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  |         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
  |         at $Proxy11.create(Unknown Source)
  |         at org.jboss.deployment.MainDeployer.create(MainDeployer.java:919)
  |         at org.jboss.deployment.MainDeployer.create(MainDeployer.java:909)
  |         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:773)
  |         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:737)
  |         at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
  |         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at 
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  |         at 
org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
  |         at 
org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
  |         at 
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  |         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  |         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
  |         at $Proxy6.deploy(Unknown Source)
  |         at 
org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:325)
  |         at 
org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:501)
  |         at 
org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:204)
  |         at 
org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:277)
  |         at 
org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:267)
  |         at 
org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:217)
  |         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)
  |         at 
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
  |         at 
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  |         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  |         at 
org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:950)
  |         at $Proxy0.start(Unknown Source)
  |         at 
org.jboss.system.ServiceController.start(ServiceController.java:436)
  |         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)
  |         at 
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
  |         at 
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  |         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  |         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
  |         at $Proxy4.start(Unknown Source)
  |         at org.jboss.deployment.SARDeployer.start(SARDeployer.java:273)
  |         at org.jboss.deployment.MainDeployer.start(MainDeployer.java:973)
  |         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:774)
  |         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:737)
  |         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:721)
  |         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)
  |         at 
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
  |         at 
org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
  |         at 
org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
  |         at 
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
  |         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
  |         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
  |         at $Proxy5.deploy(Unknown Source)
  |         at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:434)
  |         at org.jboss.system.server.ServerImpl.start(ServerImpl.java:315)
  |         at org.jboss.Main.boot(Main.java:195)
  |         at org.jboss.Main$1.run(Main.java:463)
  | 
  | 


Thank you for your help !

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

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


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to