gpt4 book ai didi

hibernate - createQuery()不提供选择查询的结果

转载 作者:行者123 更新时间:2023-12-02 09:46:16 25 4
gpt4 key购买 nike

我将使用jsp和servlet使用hibernate 4.3.x开发一个简单的应用程序。我想将数据库中的表数据加载到使用jsp创建的表中。

这是我的 role.jsp 文件中的必填部分

 <table class="table">
<thead>
<tr>
<th>Role ID</th>
<th>Role Title</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<%
DBManager db = new DBManager();
List<Role> list = db.getListOfRoles();
for (Role r : list) {
%>
<tr>
<td><%=r.getRid()%></td>
<td><%=r.getRtitle()%></td>
<td><button type="button" class="btn btn-secondary" action="viewRoles.jsp">View</button>
<button type="button" class="btn btn-secondary" action="updateRoles.jsp">Update</button>
</td>
</tr>
<%}%>
</tbody>
</table>

这是我的pojo类 Role.java ,用于表示Role对象
package com.hrmweb.model;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="ROLE")
public class Role implements Serializable{
@Id
@GenericGenerator(name="gen",strategy="increment")
@GeneratedValue(generator="gen")
@Column(name = "rid", unique = true, nullable = false, precision = 15, scale = 0)
private long rid;
private String rtitle;


public Role() {
}

public Role(String rtitle) {
this.rtitle = rtitle;
System.out.println(rtitle);
}

public long getRid() {
return rid;
}

public void setRid(long rid) {
this.rid = rid;
}

public String getRtitle() {
return rtitle;
}

public void setRtitle(String rtitle) {
this.rtitle = rtitle;
}
}

这是 DBManager.java 类中数据库事务的必需部分
 public List<Role> getListOfRoles(){
List<Role> list = new ArrayList<Role>();
Session session = HibernateUtil.openSession();
Transaction tx = null;
try {
tx = session.getTransaction();
tx.begin();
Query query = session.createQuery("from Role");
List<Role> listCategories = query.list();

System.out.println("Roles List : "+list.size());
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
return list;
}

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/test</property>
<property name="hibernate.connection.username">test</property>
<property name="hibernate.connection.password">test</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping class="com.hrmweb.model.user"/>
<mapping class="com.hrmweb.model.Role"/>
</session-factory>
</hibernate-configuration>

但是,当我执行我的应用程序时,它不会通过createQuery()方法返回任何值列表。而且GlassFish服务器也不会给出任何错误消息。所以这是服务器输出。

Info: HHH000232: Schema update complete Info: Hibernate: select role0_.rid as rid1_0_, role0_.rtitle as rtitle2_0_ from ROLE role0_ Info: Roles List : 0



这是我的derby数据库层次结构

enter image description here

我对这种环境非常陌生,并尝试了许多方法。请帮我解决这个问题。

最佳答案

您返回的list为空,因为您没有实现它,则需要返回listCategories
像这样 :

 public List<Role> getListOfRoles(){
List<Role> list = new ArrayList<Role>();
Session session = HibernateUtil.openSession();
Transaction tx = null;
try {
tx = session.getTransaction();
tx.begin();
Query query = session.createQuery("from Role");
List<Role> listCategories = query.list();

System.out.println("Roles List : "+listCategories.size());
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
return listCategories;
}

关于hibernate - createQuery()不提供选择查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46869730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com