These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: please help with strange hibernate NullPointerException
PostPosted: Fri Sep 05, 2008 1:27 am 
Beginner
Beginner

Joined: Mon May 24, 2004 7:39 pm
Posts: 37
Location: Charlotte
Thank you very much. Any help would be greatly appreciated.

Hibernate version:
3.2

Mapping documents:
Code:
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
   <query name="userSubRegionsAndLocations">
      select sr.subRegion
      from com.interview.model.entity.general.SubRegions sr
      
   </query>
</hibernate-mapping>


Annotated classes:
Code:
@Entity
@Table(name = "region", catalog = "interview")
public class Region implements java.io.Serializable {

   private Long id;
   private Region region;
   private Organization organization;
   private Date createdDate;
   private Date lastModifiedDate;
   private String name;
   private Status status;
   private String addressLine1;
   private String addressLine2;
   private String addressCity;
   private String addressState;
   private String addressZipCode;
   private boolean isLocation;

   public Region() {
   }

   @Id
   @GeneratedValue(strategy = IDENTITY)
   @Column(name = "id", unique = true, nullable = false)
   public Long getId() {
      return this.id;
   }

   public void setId(Long id) {
      this.id = id;
   }

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "parent_id")
   public Region getParentRegion() {
      return this.region;
   }

   public void setParentRegion(Region region) {
      this.region = region;
   }

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "organization_id", nullable = false)
   public Organization getOrganization() {
      return this.organization;
   }

   public void setOrganization(Organization organization) {
      this.organization = organization;
   }

   @Temporal(TemporalType.TIMESTAMP)
   @Column(name = "created_date", nullable = false, length = 19)
   public Date getCreatedDate() {
      return this.createdDate;
   }

   public void setCreatedDate(Date createdDate) {
      this.createdDate = createdDate;
   }

   @Temporal(TemporalType.TIMESTAMP)
   @Column(name = "last_modified_date", nullable = false, length = 19)
   public Date getLastModifiedDate() {
      return this.lastModifiedDate;
   }

   public void setLastModifiedDate(Date lastModifiedDate) {
      this.lastModifiedDate = lastModifiedDate;
   }

   @Column(name = "name", nullable = false, length = 150)
   public String getName() {
      return this.name;
   }

   public void setName(String name) {
      this.name = name;
   }

   @Enumerated(EnumType.STRING)
   @Column(name="status")
   public Status getStatus() {
      return status;
   }

   public void setStatus(Status status) {
      this.status = status;
   }

   @Column(name="is_location")
   public boolean getLocation() {
      return isLocation;
   }

   @Transient
   public boolean isLocation () {
      return isLocation;
   }

   public void setLocation(boolean isLocation) {
      this.isLocation = isLocation;
   }

   @Column(name="address_line_1")
   public String getAddressLine1() {
      return addressLine1;
   }

   public void setAddressLine1(String addressLine1) {
      this.addressLine1 = addressLine1;
   }

   @Column(name="address_line_2")
   public String getAddressLine2() {
      return addressLine2;
   }

   public void setAddressLine2(String addressLine2) {
      this.addressLine2 = addressLine2;
   }

   @Column(name="address_city")
   public String getAddressCity() {
      return addressCity;
   }

   public void setAddressCity(String addressCity) {
      this.addressCity = addressCity;
   }

   @Column(name="address_state")
   public String getAddressState() {
      return addressState;
   }

   public void setAddressState(String addressState) {
      this.addressState = addressState;
   }

   @Column(name="address_zip_code")
   public String getAddressZipCode() {
      return addressZipCode;
   }

   public void setAddressZipCode(String addressZipCode) {
      this.addressZipCode = addressZipCode;
   }

   @Override
   public int hashCode() {
      if (null == getId()) return super.hashCode();
      else return getId().hashCode();
   }

   @Override
   public boolean equals(Object obj) {
      if (null == obj) return false;
      else if (null == getId()) return false;
      else if (obj instanceof Region) {
         Region test = ((Region) obj);
         if (null == test.getId()) return false;
         else return test.getId().equals(test.getId());
      }
      else return false;
   }
}


Code:
@Entity
@IdClass(SubRegionsPK.class)
@Table(name = "sub_regions", catalog = "interview")
public class SubRegions {

   private SubRegionsPK id;
   private Region region;
   private Region subRegion;

   public SubRegions () {}

   public SubRegions (Region region, Region subRegion) {
      setId(new SubRegionsPK(region, subRegion));
   }

   @Id
   public SubRegionsPK getId() {
      return id;
   }

   public void setId(SubRegionsPK id) {
      this.id = id;
   }

   public void setRegion(Region region) {
      this.region = region;
   }

   public Region getSubRegion() {
      return subRegion;
   }

   public void setSubRegion(Region subRegion) {
      this.subRegion = subRegion;
   }

   @Override
   public int hashCode() {
      if (null != getId()) return getId().hashCode();
      else return super.hashCode();
   }

   @Override
   public boolean equals(Object obj) {
      if (obj == null) return false;
      else if (obj instanceof SubRegions) {
         if (null == ((SubRegions) obj).getId()) return false;
         else return ((SubRegions) obj).getId().equals(getId());
         
      }
      else return false;
   }

   public Region getRegion() {
      return region;
   }
}


Code:
@Embeddable
public class SubRegionsPK implements Serializable {

   private Region region;
   private Region subRegion;

   public SubRegionsPK () {}

   public SubRegionsPK(Region region, Region suRegion) {
      this.region = region;
      this.subRegion = suRegion;
   }

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "region_id", nullable = false)
   public Region getRegion() {
      return region;
   }
   public void setRegion(Region region) {
      hashCode = Integer.MIN_VALUE;
      this.region = region;
   }

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "sub_region_id", nullable = false)
   public Region getSubRegion() {
      return subRegion;
   }
   public void setSubRegion(Region subRegion) {
      hashCode = Integer.MIN_VALUE;
      this.subRegion = subRegion;
   }

   private int hashCode = Integer.MIN_VALUE;
   @Override
   public int hashCode() {
      if (hashCode == Integer.MIN_VALUE) {
         if (null == region || null == region.getId() || null == subRegion || null == subRegion.getId())
            hashCode = super.hashCode();
         else {
            StringBuffer sb = new StringBuffer();
            sb.append(region.getId());
            sb.append(':');
            sb.append(subRegion.getId());
            hashCode = sb.toString().hashCode();
         }
      }
      return hashCode;
   }

   @Override
   public boolean equals(Object obj) {
      if (null == region || null == region.getId() || null == subRegion || null == subRegion.getId())
         return false;
      else if (obj instanceof SubRegionsPK) {
         SubRegionsPK test = (SubRegionsPK) obj;
         return (region.equals(test.getRegion()) || subRegion.equals(test.getSubRegion()));
      }
      else return super.equals(obj);
   }
}


Code between sessionFactory.openSession() and session.close():
Code:
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();


Full stack trace of any exception that occurs:
Quote:
java.lang.NullPointerException
at org.hibernate.util.StringHelper.root(StringHelper.java:150)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1378)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:31)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1354)
at org.hibernate.hql.ast.tree.FromElement.getIdentityColumn(FromElement.java:296)
at org.hibernate.hql.ast.tree.IdentNode.resolveAsAlias(IdentNode.java:131)
at org.hibernate.hql.ast.tree.IdentNode.resolve(IdentNode.java:77)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:90)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:728)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1105)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRefLhs(HqlSqlBaseWalker.java:4920)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1066)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:1881)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1825)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1394)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:402)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:352)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)


Name and version of the database you are using:
MySQL 5

The generated SQL (show_sql=true):
N/A

Debug level Hibernate log excerpt:
Quote:
...
01:09:01,796 DEBUG [SessionFactoryImpl] Checking 2 named HQL queries
01:09:01,796 DEBUG [SessionFactoryImpl] Checking named query: userSubRegionsOrLocations
01:09:01,812 DEBUG [QueryTranslatorImpl] parse() - HQL:
select sr.subRegion
from com.interview.model.entity.general.SubRegions sr


01:09:01,812 DEBUG [AST] --- HQL AST ---
\-[QUERY] 'query'
\-[SELECT_FROM] 'SELECT_FROM'
+-[FROM] 'from'
| \-[RANGE] 'RANGE'
| +-[DOT] '.'
| | +-[DOT] '.'
| | | +-[DOT] '.'
| | | | +-[DOT] '.'
| | | | | +-[DOT] '.'
| | | | | | +-[IDENT] 'com'
| | | | | | \-[IDENT] 'interview'
| | | | | \-[IDENT] 'model'
| | | | \-[IDENT] 'entity'
| | | \-[IDENT] 'general'
| | \-[IDENT] 'SubRegions'
| \-[ALIAS] 'sr'
\-[SELECT] 'select'
\-[DOT] '.'
+-[IDENT] 'sr'
\-[IDENT] 'subRegion'

01:09:01,812 DEBUG [ErrorCounter] throwQueryException() : no errors
01:09:01,812 DEBUG [HqlSqlBaseWalker] select << begin [level=1, statement=select]
01:09:01,812 DEBUG [FromElement] FromClause{level=1} : com.interview.model.entity.general.SubRegions (sr) -> subregions0_


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.