2017-04-21 74 views
2

我有實體這樣添加新的瞬態場現有@Enity

@Entity 
class Dates{ 

     @Column(name="day"); 
     private String day; 


     @Column(name="year"); 
     private String year; 

     //getters and setters 


     //this is I want to have like dateAndyear=day+"-"+year or even create date object based on day and year 
     private String dateAndyear; 


} 

我想在內部具有該領域dateAndyear在實體創建的實體時自動設置。之後,我想在Criteria API的「where」子句中使用此字段。

+0

你想說明一些代碼嗎? –

+0

我的最終目標是從日期和年份字段創建Date對象,並在Criteria Builder中使用「between」函數來搜索實體 – MagGGG

+0

爲什麼數據庫有'day'和'year'列,更重要的是他們爲什麼是'Strings' ?您應該專注於修復設計,而不是試圖解決由此造成的問題。 – Kayaman

回答

1

瞬態字段不是序列化過程的一部分,也不會保存在數據庫中,因此不能在條件api中用作where子句。 但是你可以在創建時使用構造函數初始化它們,而hibernate在內部永遠不會初始化它們。

+0

有沒有辦法像做? predicates.add(criteriaBuilder.equal(root。 get(「dateAndyear」),date)); ? – MagGGG

+1

由於數據庫中不存在臨時字段,並且由於Criteria查詢在數據庫中執行,您是否真的需要問? –

+0

普尼特/比利是正確的,瞬態不能用於查詢。您只能使用DB中存在的字段,因爲在那裏執行查詢。 –