Java 从hibernate检索数据的正确列表类型是什么

Java 从hibernate检索数据的正确列表类型是什么,java,hibernate,jsp,Java,Hibernate,Jsp,我正在尝试从hibernate检索数据。我在数据库的Users表中插入了以下数据 userId=2 userName=kiko password=kareem 现在我想再次检索它们,但我不知道列表的正确类型转换,因为当我尝试从用户1对象检索时,它现在由代码找到: out.println(users1.getUserName()); 这是我的密码 login.java(servlet) 包装控制器; 导入java.io.IOException; 导入java.io.PrintWriter;

我正在尝试从hibernate检索数据。我在数据库的
Users
表中插入了以下数据

userId=2
userName=kiko
password=kareem
现在我想再次检索它们,但我不知道
列表
的正确类型转换,因为当我尝试从
用户1
对象检索时,它现在由代码找到:

out.println(users1.getUserName());

这是我的密码

login.java(servlet)

包装控制器;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.util.List;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入org.hibernate.Query;
导入org.hibernate.Session;
导入org.hibernate.SessionFactory;
导入org.hibernate.cfg.Configuration;
导入HibernateClasses.Users;
/**
*Servlet实现类登录
*/
@WebServlet(“/login”)
公共类登录扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
/**
*@参见HttpServlet#HttpServlet()
*/
公共登录(){
超级();
//TODO自动生成的构造函数存根
}
/**
*@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse
*(答复)
*/
受保护的无效数据集(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
//TODO自动生成的方法存根
}
/**
*@参见HttpServlet#doPost(HttpServletRequest,HttpServletResponse
*(答复)
*/
受保护的void doPost(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
PrintWriter out=response.getWriter();
字符串名称=request.getParameter(“用户名”);
字符串密码=request.getParameter(“密码”);
out.println(“您的名字是”+name);
//用户=新用户();
SessionFactory SessionFactory=新配置().configure()
.buildSessionFactory();
Session Session=sessionfactory.openSession();
session.beginTransaction();
Query Query=session.getNamedQuery(“Users.IdPass”);
query.setString(0,名称);
query.setString(1,密码);
List users1=query.List();
Users=(Users)query.list();
session.getTransaction().commit();
session.close();
System.out.println(users.getUserName());
}
}
login.jsp


在此处插入标题
  • 用户
  • 密码
Users.java

package-HibernateClasses;
导入javax.persistence.Entity;
导入javax.persistence.Id;
导入javax.persistence.namedNativeRequesties;
导入javax.persistence.namedNativeRequesty;
@实体
@命名请求({
@NamedNaviRequesty(name=“Users.byId”,query=“Select*from Users,其中userId=?”,resultClass=Users.class),
@NamedNaviRequesty(name=“Users.all”,query=“Select*from Users”,resultClass=Users.class),
@NamedNaviRequesty(name=“Users.IdPass”,query=“Select*from userName=?and password=?”的用户,resultClass=Users.class)})
公共类用户{
@身份证
私有int用户id;
私有字符串用户名;
私有字符串密码;
public int getUserId(){
返回用户标识;
}
public void setUserId(int userId){
this.userId=userId;
}
公共字符串getUserName(){
返回用户名;
}
public void setUserName(字符串用户名){
this.userName=用户名;
}
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
}
控制台

Feb 11, 2016 12:48:19 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Archive System' did not find a matching property.
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/7.0.67
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Dec 7 2015 13:07:11 UTC
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         7.0.67.0
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 8.1
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            6.3
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             C:\Program Files\Java\jre7
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.7.0_79-b15
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         C:\kiko\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         C:\Program Files\Apache Software Foundation\Tomcat 7.0
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=C:\kiko\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 7.0
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=C:\kiko\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 7.0\endorsed
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1252
Feb 11, 2016 12:48:19 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Hewlett-Packard\SimplePass\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;.
Feb 11, 2016 12:48:19 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8081"]
Feb 11, 2016 12:48:19 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Feb 11, 2016 12:48:19 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 637 ms
Feb 11, 2016 12:48:19 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Feb 11, 2016 12:48:19 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.67
Feb 11, 2016 12:48:20 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Feb 11, 2016 12:48:20 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8081"]
Feb 11, 2016 12:48:20 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Feb 11, 2016 12:48:20 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 920 ms
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Feb 11, 2016 12:48:28 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Controller.login] in context with path [/Archive_System] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: javax.persistence.EntityListeners
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1856)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1705)
    at org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:96)
    at org.hibernate.annotations.common.reflection.java.JavaReflectionManager.getDefaults(JavaReflectionManager.java:226)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1385)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1856)
    at Controller.login.doPost(login.java:58)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
这条线

java.lang.ClassNotFoundException: javax.persistence.EntityListeners
指出您缺少一些要包含在类路径或项目中的jar文件

您可以使用以下Maven代码添加依赖项jar文件:

<!-- for JPA, use hibernate-entitymanager -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
</dependency>

org.hibernate
休眠实体管理器

您应该更改此代码

@NamedNativeQueries({
            @NamedNativeQuery(name = "Users.byId", query = "Select * from users where userId=?", resultClass = Users.class),
            @NamedNativeQuery(name = "Users.all", query = "Select * from users ", resultClass = Users.class),
            @NamedNativeQuery(name = "Users.IdPass", query = "Select * from users where userName=? and password=? ", resultClass = Users.class) })

请参见使用
@NamedQuery
注释的示例

Hibernate命名查询是一些有意义的用户使用任何查询的方式 名称这就像使用别名一样。Hibernate框架提供了 命名查询的概念,因此应用程序程序员不需要 将查询分散到所有java代码

在hibernate中定义命名查询有两种方法:

  • 按注释
  • 通过映射文件
Hibernate按注释命名查询 如果要在Hibernate中使用命名查询,需要 了解
@namedquerys
@NamedQuery
注释

@NameQueries
注释用于定义多个命名查询

@NameQuery
注释用于定义单个命名查询

让我们看看使用命名查询的示例:

@NamedQueries({  
   @NamedQuery(  
     name = "findEmployeeByName",  
     query = "from Employee e where e.name = :name"  
   )  
})

关于列表强制转换:
list()
返回的对象与
from
子句中使用的对象类似。例如,在上面的查询中,它返回不需要额外强制转换的
List

我是否应该在WEB-INF/lib folderyes中移动我的所有JAR(hibernate+数据库等)。。并检查它是否包含在您的
@NamedQueries({  
   @NamedQuery(  
     name = "findEmployeeByName",  
     query = "from Employee e where e.name = :name"  
   )  
})