JPA EclipseLink | getResultList返回null

时间:2017-03-06 16:43:24

标签: java jpa eclipselink

您好我的Project for distributed应用程序我需要用JPA实现一些东西。

我设置了数据库,我可以将新数据插入数据库。我的主要问题是我想搜索数据并将它们带到对话框(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 (...) 
}

所以我的搜索调用带有id我要在dialoge中搜索下一个条目并使用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;
}

并且已经存在问题:如果我将其打印出来,则只显示null。如您所见,我已经尝试了find方法和使用jpql调用。该值始终为null。 我有一个搜索方法,但有另一种情况。在那里我只需要条目的名称并显示它们。看起来像这样:

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

1 个答案:

答案 0 :(得分:-1)

(代表OP发布)

这很简单:实体类Marines需要getter和setter。随着扩展他们不能使用。