我目前正在转换文件冬眠的.hbm.xml来注释和有非常相似的这个 Adding a calculated field on jpa + jackson休眠/ JPA添加计算领域
我有一些领域,包括FIRST_NAME和姓氏一个数据库表中的问题,所以这个领域应该是持久的(这符合预期)。
但现在我已经有了一个方法getFullName()
// ?????
public String getFullName() {
return getFirstName() + " " + getLastName();
}
而且我不知道我要补充的方法,该方法的注释? (试过@Transient,@Formula,@Basic,@Column,全名......不应该是持久的)
的问题是,我用全名来创建一个订单
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();
}
...................................... ...................
我目前的'解决方案'是
@Formula("concat(first_name,' ',last_name)")
private String name;
@Override
public String getFullName() {
return getFirstName() + " " + getLastName();
}
但这是多余的,不是我想要的。
最后我想用最新的Hibernate版本。
谢谢你的回答,实际上fullName只有'exists'作为这个吸气,所以没有字段('name'应该是什么意思fullName只是我加的,因为它没有工作没有) 我总是得到一个“无法解决属性:fullName”错误:/ 与名称和姓氏在超类中的事实有什么关系? –
我明白了fullName是如何存在的,而这正是重点。 你也可以尝试的方法是将@Transient(验证它是否是正确的)以任何方式放置,并保留在第一个代码中,并简单地创建一个新的顺序,检查https://stackoverflow.com/questions/31281162 /如何以订单结果为基础的基于hibernate的订单,正确的答案显示了如何创建自己的订单。 –
它工作(在我的项目中进行了一些小的重构之后),非常感谢! –