Hibernate/JPA 添加计算字段
Hibernate/JPA add a calculated field
我目前正在将 hibernate .hbm.xml 文件转换为注释,并且有一个与此非常相似的问题
Adding a calculated field on jpa + jackson
我有一个数据库 Table,其中包含一些字段,包括 first_name 和 last_name,因此这些字段应该是持久的(这按预期工作)。
但现在我有了一个方法 getFullName()
// ?????
public String getFullName() {
return getFirstName() + " " + getLastName();
}
而且我不知道应该在方法中添加哪个注解? (试过@Transient、@Formula、@Basic、@Column、.... fullName 不应该是持久的)
问题是我使用全名创建订单
Order.asc("fullName");
然后在方法中使用
public List<Student> findAll(Session session, Order order) {
Criteria crit = session.createCriteria(Student.class);
if (null != order) {
crit.addOrder(order);
}
return crit.list();
}
................................................ ......
我现在的'solution'是
@Formula("concat(first_name,' ',last_name)")
private String name;
@Override
public String getFullName() {
return getFirstName() + " " + getLastName();
}
但这是多余的,并不是我真正想要的。
最后我想用最新的Hibernate版本
如果 fullName
不是持久性那么你应该使用 @Transient
,但是 javax.persistence
。
此外,将 @Formula("concat(first_name,' ',last_name)")
放在 getFullName
上并删除 getName
-> 这实际上是不正确的,因为 @Transient 和 @公式不能很好地协同工作。
如评论中所述,您可以创建自己的订单以添加到条件 api。
我目前正在将 hibernate .hbm.xml 文件转换为注释,并且有一个与此非常相似的问题 Adding a calculated field on jpa + jackson
我有一个数据库 Table,其中包含一些字段,包括 first_name 和 last_name,因此这些字段应该是持久的(这按预期工作)。
但现在我有了一个方法 getFullName()
// ?????
public String getFullName() {
return getFirstName() + " " + getLastName();
}
而且我不知道应该在方法中添加哪个注解? (试过@Transient、@Formula、@Basic、@Column、.... fullName 不应该是持久的)
问题是我使用全名创建订单
Order.asc("fullName");
然后在方法中使用
public List<Student> findAll(Session session, Order order) {
Criteria crit = session.createCriteria(Student.class);
if (null != order) {
crit.addOrder(order);
}
return crit.list();
}
................................................ ......
我现在的'solution'是
@Formula("concat(first_name,' ',last_name)")
private String name;
@Override
public String getFullName() {
return getFirstName() + " " + getLastName();
}
但这是多余的,并不是我真正想要的。
最后我想用最新的Hibernate版本
如果 fullName
不是持久性那么你应该使用 @Transient
,但是 javax.persistence
。
此外,将 -> 这实际上是不正确的,因为 @Transient 和 @公式不能很好地协同工作。@Formula("concat(first_name,' ',last_name)")
放在 getFullName
上并删除 getName
如评论中所述,您可以创建自己的订单以添加到条件 api。