Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Hibernate Join Query

843859Dec 5 2007 — edited Dec 5 2007
I have two tables
Employee and Book

employee with fields

employee_code
emp_name
nick_name
password

Employee class
public class Employee {
public String employeeName;
public int employeeCode;
public String password;
public String nickName;

public Employee() {

}
public Employee(String employeeName, int employeeCode, String password, String nickName) {

this.employeeName = employeeName;
this.employeeCode = employeeCode;
this.password = password;
this.nickName = nickName;
}
/**
* @return the employeeCode
*/
public int getEmployeeCode() {
return employeeCode;
}
/**
* @param employeeCode the employeeCode to set
*/
public void setEmployeeCode(int employeeCode) {
this.employeeCode = employeeCode;
}
/**
* @return the employeeName
*/
public String getEmployeeName() {
return employeeName;
}
/**
* @param employeeName the employeeName to set
*/
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
/**
* @return the nickName
*/
public String getNickName() {
return nickName;
}
/**
* @param nickName the nickName to set
*/
public void setNickName(String nickName) {
this.nickName = nickName;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}

}


book table with fields

bookcode
bookname
employeecode

book class

public class Book {
public int bookCode;
public String bookName;
public int employeeCode;
/**
* @return the bookCode
*/
public int getBookCode() {
return bookCode;
}
/**
* @param bookCode the bookCode to set
*/
public void setBookCode(int bookCode) {
this.bookCode = bookCode;
}
/**
* @return the bookName
*/
public String getBookName() {
return bookName;
}
/**
* @param bookName the bookName to set
*/
public void setBookName(String bookName) {
this.bookName = bookName;
}
/**
* @return the employeeCode
*/
public int getEmployeeCode() {
return employeeCode;
}
/**
* @param employeeCode the employeeCode to set
*/
public void setEmployeeCode(int employeeCode) {
this.employeeCode = employeeCode;
}
public Book(int bookCode, String bookName, int employeeCode) {

this.bookCode = bookCode;
this.bookName = bookName;
this.employeeCode = employeeCode;
}
}

employee.hbm.xml file

<hibernate-mapping>
<class name="hiber.pspl.employee.classes.Employee" table="employee" >
<id name="employeeCode" column="employee_code" type="int" unsaved-value="0">
</id>
<property name="employeeName" column="emp_name"/>
<property name="nickName" column="nick_name"/>
<property name="password" column="password" />
<join table ="book" fetch="join">
<key column="employee_code"/>
</join>
</class>
</hibernate-mapping>


book.hbm.xml file

<hibernate-mapping>
<class name="hiber.pspl.employee.classes.Book" table="book">
<id name="bookCode" type="int" unsaved-value="0">
<generator class="increment" />
</id>
<property name="bookName" />
<property name="employeeCode" column="employee_Code"/>
<!--<join table="bookproperity" >
<key column="bookcode"/>
</join>-->

</class>
</hibernate-mapping>

firing a join query

Query hql = session.createQuery("from Employee as e join e.Book");
objects=hql.list();

giving exception:
org.hibernate.QueryException: could not resolve property: book of: hiber.pspl.employee.classes.Employee [from hiber.pspl.employee.classes.Employee as e join e.book]
at org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:37)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1265)
at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:278)
at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:372)
at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:528)
at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:221)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:172)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:313)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3258)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3050)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2928)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:686)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:542)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:279)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:227)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:105)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:74)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:53)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:108)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:88)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1540)
at hiber.pspl.employee.DB.EmployeeDB.load(EmployeeDB.java:44)
at hiber.pspl.employee.command.EmployeeProcessCommand.execute(EmployeeProcessCommand.java:26)
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 hiber.pspl.employee.controller.ControllerServlet.handleRequest(ControllerServlet.java:80)
at hiber.pspl.employee.controller.ControllerServlet.doGet(ControllerServlet.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:286)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:562)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:974)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:205)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:562)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:974)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:177)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:562)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:974)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:562)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:974)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:203)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:637)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:488)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:568)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:631)
at java.lang.Thread.run(Thread.java:595)
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 2 2008
Added on Dec 5 2007
14 comments
292 views