2013-03-20 53 views
0

我有這個Java對象,我想用它來顯示來自數據庫的數據。JPA空對象

public TData td; 

    public class TData { 

     private long id; 
     private String key; 
     private String language; 
     private String translation; 

     public TData() { 
     }; 

     public TData(long id, String key, String language, String translation) { 
      // super(); 
      this.id = id; 
      this.key = key; 
      this.language = language; 
      this.translation = translation; 
     } 

     public long getId() { 
      return id; 
     } 

     public void setId(long id) { 
      this.id = id; 
     } 

     public String getKey() { 
      return key; 
     } 

     public void setKey(String key) { 
      this.key = key; 
     } 

     public String getLanguage() { 
      return language; 
     } 

     public void setLanguage(String language) { 
      this.language = language; 
     } 

     public String getTranslation() { 
      return translation; 
     } 

     public void setTranslation(String translation) { 
      this.translation = translation; 
     } 

    } 

    public TData getDataObj() { 
     return td; 
    } 

這就是我要用來獲取數據的數據庫表:

CREATE TABLE translations (
id SERIAL NOT NULL, 
KEY VARCHAR(255), 
LANGUAGE VARCHAR(255), 
TRANSLATION VARCHAR(255) 
) 

我有一個是用來做查詢,自定義JPA對象:

@PostConstruct 
    public void loadData() { 

     td = new TData(); 

     String query = "SELECT c FROM Translations c WHERE c.Id = '70'"; 
     //String query = "SELECT p from translations p where id=70"; 
     td = (TData) dao.jpqlQuerySingle(query); 

    } 

當我打開Java對象爲空的JSF頁面。 Java方法jpqlQuerySingle用於返回結果作爲對象,但由於某種原因,我得到空的對象。你能幫我解決這個問題嗎?

回答

2

您正在比較一個字符串與長。這給你零結果。試試這個:

SELECT c FROM Translations c WHERE c.Id = 70 
0

除了Tamplar的回答(比較長的字符串):你應該使用對象包裝你@Id左右,即一個Long對象,而不是long原始數據類型。

這樣做的原因:總之,long不能null,並檢查最常見,最簡單的方法,如果持久化對象保存/拆卸或新是檢查@Id是否null