0 Replies Latest reply on Oct 16, 2007 6:04 AM by Gianpaolo db

    NPE:OneToOneSecondPass.java:135 - Consecutive One to one rel

    Gianpaolo db Newbie

      Hi Guys, this is my environment:

      java 1.6
      jboss-version: 4.0.5.GA
      Seam-Version: 1.2.1.GA
      Hibernate-Version: 3.2.3.ga

      I' m using annotation and javax.persistence.EntityManager.

      the problem is in the mapping of the following schema (the relation are all one-to-one):
      First <-(Fk to First)-Second <-(Fk to Second)-Third
      .First has a pk generated by a sequence.
      .Second and Third tables have pk=fk

      this is my mapping:


      =======================

      public class EBFirst implements java.io.Serializable {

      private EBSecond eBSecond;

      @GenericGenerator(name="generator", strategy="myGenerator.TriggerGenerator")
      @Id
      @GeneratedValue(generator="generator")
      @Column(name="PK_ID", unique=true, nullable=false, columnDefinition="NUMBER", precision=28, scale=0)
      public BigDecimal getPkId() {
      return this.pkId;
      }

      @OneToOne(mappedBy="EBFirst", cascade=CascadeType.ALL)
      public EBSecond getEBSecond() {
      return eBSecond;
      }
      .
      .
      .

      }

      ------------

      public class EBSecond implements java.io.Serializable {

      private EBFirst EBFirst;
      private EBThird eBThird;

      @GenericGenerator(name="generator", strategy="foreign", parameters = {@Parameter(name = "property", value = "EBFirst")})
      @GeneratedValue(generator="generator")
      @Id
      @Column(name="PK_ID", unique=true, nullable=false, columnDefinition="NUMBER", precision=28, scale=0)
      public BigDecimal getPkId() {
      return this.pkId;
      }

      @OneToOne
      @PrimaryKeyJoinColumn
      public EBFirst getEBFirst() {
      return this.EBFirst;
      }


      @OneToOne (mappedBy="EBSecond", cascade=CascadeType.ALL)
      public EBThird getEBThird() {
      return eBThird;
      }

      .
      .
      .

      }

      -------------


      public class EBThird implements java.io.Serializable {

      @GenericGenerator(name="generator", strategy="foreign", parameters = {@Parameter(name = "property", value = "EBSecond")})
      @GeneratedValue(generator="generator")
      @Id
      @Column(name="PK_ID", unique=true, nullable=false, columnDefinition="NUMBER", precision=28, scale=0)
      public BigDecimal getPkId() {
      return this.pkId;
      }

      @OneToOne
      @PrimaryKeyJoinColumn
      public EBSecond getEBSecond() {
      return this.EBSecond;
      }


      .
      .
      .

      }

      =======================




      this is the exception at startup:

      [org.jboss.system.ServiceController] Problem starting service persistence.units:ear=cerssvd.ear,jar=cerssvd.ejb3.jar,unitName=entityManager
      java.lang.NullPointerException
      at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:135)
      at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1054)
      at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296)
      at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1039)
      at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1211)
      at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:154)
      at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:847)
      at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:385)
      at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:126)
      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:597)
      .
      .
      .



      the problem is in the class EBSecond at the following:
      @OneToOne (mappedBy="EBSecond", cascade=CascadeType.ALL)

      he doesn't like the attribute mappedBy="EBSecond". But it's mandatory (in this context)



      Can someone help me?
      Thanks, Gianpaolo