2017-04-21 75 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中存在的字段,因为在那里执行查询。 –