如何将struts2与Hibernate集成
我很难将struts2与Hibernate集成 我正在使用netbeans 7.1.2 我有一个非常简单的JavaEE项目,它显示Derby(JavaDB)数据库中表“QUESTION”的所有行。我已经创建了表并将其映射到hibernate.cfg.xml文件 但当我右键单击并转到“运行HQL查询”并执行查询时 “从问题”,我得到以下错误:如何将struts2与Hibernate集成,hibernate,Hibernate,我很难将struts2与Hibernate集成 我正在使用netbeans 7.1.2 我有一个非常简单的JavaEE项目,它显示Derby(JavaDB)数据库中表“QUESTION”的所有行。我已经创建了表并将其映射到hibernate.cfg.xml文件 但当我右键单击并转到“运行HQL查询”并执行查询时 “从问题”,我得到以下错误: org.hibernate.exception.SQLGrammarException: could not execute query at or
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2223)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
Caused by: java.sql.SQLSyntaxErrorException: Table/View 'RAMBO.QUESTION' does not exist.
at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.Connection.prepareStatement(Unknown Source)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:423)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
... 9 more
Caused by: org.apache.derby.client.am.SqlException: Table/View 'RAMBO.QUESTION' does not exist.
at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.parsePrepareError(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.parsePRPSQLSTTreply(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown Source)
at org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown Source)
at org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unknown Source)
at org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.readPrepareDescribeInputOutput(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.flowPrepareDescribeInputOutput(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.prepare(Unknown Source)
at org.apache.derby.client.am.Connection.prepareStatementX(Unknown Source)
... 17 more
我的Hibernate.cfg.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
<property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
<property name="hibernate.connection.url">jdbc:derby://localhost:1527/Q4U</property>
<property name="hibernate.connection.username">rambo</property>
<property name="hibernate.connection.password">ho</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping resource="hibernate.hbm.xml"/>
<mapping/>
</session-factory>
</hibernate-configuration>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="beans.Question" table="RAMBO.QUESTION">
<id name="qid" type="java.lang.Integer">
<column name="QID" />
<generator class="increment" />
</id>
<property name="opc" type="java.lang.Integer">
<column name="OPC" not-null="true"/>
</property>
<property name="uid" type="java.lang.Integer">
<column name="UID" not-null="true"/>
</property>
<property name="cid" type="java.lang.Integer">
<column name="CID" not-null="true"/>
</property>
<property name="abuse" type="java.lang.Integer">
<column name="ABUSE" not-null="true"/>
</property>
<property name="accuracy" type="java.lang.Float">
<column name="ACCURACY" not-null="true"/>
</property>
<property name="poston" type="java.util.Date">
<column name="POSTON" not-null="true"/>
</property>
<property name="body" type="java.lang.String">
<column name="BODY" not-null="true"/>
</property>
<property name="op1" type="java.lang.String">
<column name="OP1" not-null="true"/>
</property>
<property name="op2" type="java.lang.String">
<column name="OP2" not-null="true"/>
</property>
<property name="op3" type="java.lang.String">
<column name="OP3" not-null="true"/>
</property>
<property name="op4" type="java.lang.String">
<column name="OP4" not-null="true"/>
</property>
<property name="op5" type="java.lang.String">
<column name="OP5" not-null="true"/>
</property>
<property name="cname" type="java.lang.String">
<column name="CNAME" not-null="true"/>
</property>
</class>
</hibernate-mapping>
FindQuestion.java
package beans;
import java.io.Serializable;
import java.util.Date;
public class Question implements Serializable {
int qid, opc, uid, cid, abuse;
float accuracy;
Date poston;
String body, op1, op2, op3, op4, op5, cname;
// Also public getters and setters
}
package controller;
import beans.Question;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
public class FindQuestion extends ActionSupport {
private List questionList = new ArrayList();
@Override
public String execute() throws Exception {
try {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
this.questionList = (List<Question>) session.createQuery("from Question");
session.getTransaction().commit();
} catch (Exception e) {
}
return SUCCESS;
}
}
包装控制器;
进口豆类。问题;
导入com.opensymphony.xwork2.ActionSupport;
导入java.util.ArrayList;
导入java.util.List;
导入org.hibernate.Session;
公共类FindQuestion扩展了ActionSupport{
private List questionList=new ArrayList();
@凌驾
公共字符串execute()引发异常{
试一试{
会话会话=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
this.questionList=(List)session.createQuery(“来自问题”);
session.getTransaction().commit();
}捕获(例外e){
}
回归成功;
}
}
您是否尝试过将table=“RAMBO.QUESTION”
更改为table=“QUESTION”
?的问题可能重复,请不要发布两次相同的问题。此问题没有任何问题,请使用hibernate重新标记,请打开日志记录并找出对数据库应用的SQL查询。当使用netbeans时,您应该能够设置到数据库的连接,这样您就可以创建一个模式,并从该模式自动生成实体类。。。
package controller;
import beans.Question;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
public class FindQuestion extends ActionSupport {
private List questionList = new ArrayList();
@Override
public String execute() throws Exception {
try {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
this.questionList = (List<Question>) session.createQuery("from Question");
session.getTransaction().commit();
} catch (Exception e) {
}
return SUCCESS;
}
}