0
您好,我的项目分布式应用程序我需要实现与JPA的东西。JPA EclipseLink | getResultList返回始终为空
我建立了数据库,我可以将新的数据插入数据库。我的主要问题是我想要搜索数据并让它们对话(JavaFX)
我的实体类是扩展的。继承人的代码:
@Entity
@DiscriminatorValue("Marines")
public class Marines extends Einheit
// Einheit = getter and setter Methods
{
private int id;
private String name;
private String type;
private String punkte;
private String modelSize;
private String movement;
private String closeCombat;
private String rangedSkill;
private String strength;
private String conditions;
private String wounds;
private String armorValue;
private String leadership;
// Constructor (...)
}
所以我的搜索调用是我要寻找的dialoge与buttonclick其中id增量的下一个项目内的ID。
public List<Marines> showMarinesWithID(int id)
{
EntityManagerFactory emf = Persistence.createEntityManagerFactory("demo");
EntityManager em = emf.createEntityManager();
String jpql = "SELECT m FROM Marines m WHERE m.id = 1";// + id;
Query query = em.createQuery(jpql);
List<Marines> ma = query.getResultList();
Marines foundMarine = em.find(Marines.class, 1);
System.out.println(foundMarine.getName());
return ma;
}
而且已经有一个问题:如果我打印出来,它只显示null。正如你所看到的,我已经尝试了find方法和jpql的调用。该值始终为空。 我有一个搜索方法可以工作,但有另一种情况。在那里,我只需要条目的名称并显示它们。这看起来是这样的:
public List<Marines> getMarineNames()
{
EntityManagerFactory emf = Persistence.createEntityManagerFactory("demo");
EntityManager em = emf.createEntityManager();
String jpql = "select m.name from Marines m";
Query query = em.createQuery(jpql);
List<Marines> marines = query.getResultList();
return marines;
}
更新1:从第一个方法的SQL日志
[EL Fine]: sql: 2017-03-06 17:50:40.943--ServerSession(1404945014)--Connection(1537026053)--SELECT ID, ARMORVALUE, CLOSECOMBAT, CONDITIONS, LEADERSHIP, MODELSIZE, MOVEMENT, NAME, PUNKTE, RANGEDSKILL, STRENGTH, TYPE, WOUNDS FROM MARINES WHERE (ID = ?)
bind => [1 parameter bound]
更新2:数据库值的画面: Database entries
你为什么要在每种方法中创建一个EMF?创建单个EMF并在需要时获取EntityManager。如果想要DEBUG JPQL,请在日志中查看所调用的SQL,它在大多数情况下给出了您的问题的答案 –
在第二个代码示例中,结果列表不会是“Marines”类型,因为您只选择了“名称'属性 –
如果'System.out.println(foundMarine.getName());'输出null,那么你已经找到一个海洋,但它的名字是空的。否则,你会在这一行得到一个NullPointerException! –