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! –