如何将struts2与Hibernate集成

如何将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

我很难将struts2与Hibernate集成

我正在使用netbeans 7.1.2

我有一个非常简单的JavaEE项目,它显示Derby(JavaDB)数据库中表“QUESTION”的所有行。我已经创建了表并将其映射到hibernate.cfg.xml文件

但当我右键单击并转到“运行HQL查询”并执行查询时

“从问题”,我得到以下错误:

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;
    }

}