Java jpa中的集合对象
在我的项目中插入技术jpa之前,我在数据库中有一个数据对象数组。它运行正常 但现在我使用jpa,他告诉我“空指针异常” 这是我的第一个选择函数Java jpa中的集合对象,java,hibernate,jpa,Java,Hibernate,Jpa,在我的项目中插入技术jpa之前,我在数据库中有一个数据对象数组。它运行正常 但现在我使用jpa,他告诉我“空指针异常” 这是我的第一个选择函数 public Nodes select(HttpServletRequest request) throws Dao_exception { try { Class.forName( "com.mysql.jdbc.Driver" ); } catch ( ClassNo
public Nodes select(HttpServletRequest request) throws Dao_exception
{
try
{
Class.forName( "com.mysql.jdbc.Driver" );
} catch ( ClassNotFoundException e )
{
}
String url = "jdbc:mysql://localhost/akinator";
String utilisateur = "root";
String motDePasse = "root";
Connection connexion = null;
Statement statement = null;
ResultSet resultset = null;
try
{
connexion = (Connection) DriverManager.getConnection( url, utilisateur, motDePasse );
statement = (Statement) connexion.createStatement();
resultset = (ResultSet) statement.executeQuery(SQL_SELECT);
List<Nodes> nodeList = new ArrayList<Nodes>();
while (resultset.next())
{
Nodes node = new Nodes( resultset.getLong("id"),
resultset.getString("question"),
resultset.getString("result"),
resultset.getLong("id_left_node_children"),
resultset.getLong("id_right_node_children"));
nodeList.add(node);
}
nodes = nodeList.toArray(new Nodes[nodeList.size()]);
}
catch (SQLException e)
{
e.printStackTrace();
}
return nodes[0];
}
这里是我的类节点
@Entity
@Table (name = "node")
public class Nodes
{
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column(name="id")
private Long id_node;
@Column (name = "question")
private String question;
@Column ( name = "result")
private String result;
@Column ( name = "id_left_node_children")
private Long id_left_node_children;
@Column ( name = "id_right_node_children")
private Long id_right_node_children;
Nodes left;
Nodes right;
private final static Map<Long, Nodes> nodes=new HashMap<Long,Nodes>();
public Nodes(Long id, String question, String result, Long id_left_node_children, Long id_right_node_children)
{
this.id_node=id;
this.question=question;
this.result=result;
this.id_left_node_children=id_left_node_children;
this.id_right_node_children=id_right_node_children;
nodes.put(id, this);
}
我的列表是如何创建的?
谢谢
太好了
但现在我有一个新的错误
这是我的新错误
java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from List<Nodes> to Nodes
at servlet.Game.doGet(Game.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:744)
java.lang.Error:未解决的编译问题:
类型不匹配:无法从列表转换为节点
在servlet.Game.doGet(Game.java:40)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
位于org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
位于org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
位于com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
位于org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
位于com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
位于org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
位于org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
位于org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
位于org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
位于org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)上
在org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
位于org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
位于org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
位于org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
位于org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
位于org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
位于org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
位于org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
位于org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
位于org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
运行(Thread.java:744)
这一行是错误的:
cursor=nodess.select(请求).get(1)代码>
您需要使用EJB,只有在EJB中,EntityManager才可用:
cursor=nodes\u dao.select(请求).get(1)代码>您可以粘贴错误堆栈跟踪程序吗?您应该告诉我们从哪里获得NullPointerException。很抱歉,我的null指针异常出现在“nodeList=em.createQuery(“从节点n中选择n”)。getResultList();”上。这应该不会失败。你确定em
不为空吗?只要检查em不为空,否则任何对象都不能抛出这样的例外
@Entity
@Table (name = "node")
public class Nodes
{
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column(name="id")
private Long id_node;
@Column (name = "question")
private String question;
@Column ( name = "result")
private String result;
@Column ( name = "id_left_node_children")
private Long id_left_node_children;
@Column ( name = "id_right_node_children")
private Long id_right_node_children;
Nodes left;
Nodes right;
private final static Map<Long, Nodes> nodes=new HashMap<Long,Nodes>();
public Nodes(Long id, String question, String result, Long id_left_node_children, Long id_right_node_children)
{
this.id_node=id;
this.question=question;
this.result=result;
this.id_left_node_children=id_left_node_children;
this.id_right_node_children=id_right_node_children;
nodes.put(id, this);
}
java.lang.NullPointerException
at dao.Node_dao.select(Node_dao.java:32)
at servlet.Game.doGet(Game.java:45)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:744)
java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from List<Nodes> to Nodes
at servlet.Game.doGet(Game.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:744)