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_