2017-03-06 1 views
0

こんにちは、分散アプリケーション用の私のプロジェクトではJPAで何かを実装する必要があります。JPA EclipseLink | getResultListは常にnullを返します

私はデータベースをセットアップし、新しいデータをデータベースに挿入することができます。私の主な問題は、データを検索してダイアログ(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単位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

+0

なぜすべての方法でEMFを作成しますか?単一のEMFを作成し、必要なときにEntityManagerを取得します。 DEBUG JPQLが必要な場合は、呼び出されたSQLのログを調べてください。ほとんどの場合、あなたの問題に対する答えが得られます –

+0

2番目のコードサンプルでは、​​結果のリストは '海兵隊員 '型ではありません。 '属性 –

+0

' System.out.println(foundMarine.getName()); 'がprints nullの場合、海兵隊が見つかりましたが、その名前はnullです。それ以外の場合は、この行にNullPointerExceptionが発生します。 –

答えて

-1

(に代わって投稿OP)

エンティティクラスのエンティティクラスは、getterとsetterが必要です。拡張子を使用することはできません。

関連する問題