JPA EclipseLink |getResultList returns 始终为空
JPA EclipseLink |getResultList returns always null
您好,对于我的分布式应用程序项目,我需要使用 JPA 实现一些东西。
我设置了数据库,我可以向数据库中插入新数据。我的主要问题是我想搜索数据并将它们放到对话中 (JavaFX)
我的实体 class 是一个扩展实体。这是代码:
@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 (...)
}
所以我的搜索调用是使用 id 我想在对话框中搜索下一个条目,单击 buttonclick,其中 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;
}
而且已经有一个问题:如果我打印出来它只显示空值。如您所见,我已经尝试了 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
(代表OP发表).
就这么简单:实体 class 海军陆战队需要 getter 和 setter。有了扩展,它们就不能使用了。
您好,对于我的分布式应用程序项目,我需要使用 JPA 实现一些东西。
我设置了数据库,我可以向数据库中插入新数据。我的主要问题是我想搜索数据并将它们放到对话中 (JavaFX)
我的实体 class 是一个扩展实体。这是代码:
@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 (...)
}
所以我的搜索调用是使用 id 我想在对话框中搜索下一个条目,单击 buttonclick,其中 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;
}
而且已经有一个问题:如果我打印出来它只显示空值。如您所见,我已经尝试了 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
(代表OP发表).
就这么简单:实体 class 海军陆战队需要 getter 和 setter。有了扩展,它们就不能使用了。