我已经和@Formula
注释计算特性对我实体之一:计算财产不受休眠
@Entity
@Table(name="PERSON")
public class Person {
@Searchable(name = "First name")
private String firstName;
@Column(name = "FIRST_NAME", nullable=false)
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Searchable(name = "Last name")
private String lastName;
@Column(name = "LAST_NAME", nullable=false)
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Formula("FIRST_NAME || ' ' || LAST_NAME")
private String loFstLstName;
public String getLoFstLstName() {
return this.loFstLstName;
}
public void setLoFstLstName(String loFstLstName) {
this.loFstLstName = loFstLstName;
}
}
的问题是,我只有零点在persons
列表下面的代码:
Query q = entityManager.createQuery("SELECT loFstLstName FROM Person");
List persons = q.getResultList();
PERSON
表包含具有值从零在FIRST_NAME
和LAST_NAME
领域不同的记录。我使用Hibernate 3.3和PostgreSQL 8.4.9。我究竟做错了什么?
您的意思是说,查询返回的'loFstLastName'的每个值都是null?如果是这样,你如何运行查询?通过JPA的EntityManager?通过休眠会话?显示你的代码。另外,虽然它不能解释所有*值为空,但请注意,'something'NULL是NULL。你必须使用'coalesce(FIRST_NAME,'')|| ''||如果“FIRST_NAME”和/或“LAST_NAME”可能为空,合并(LAST_NAME,'')'。 –
查询正在通过JPA的EntityManager运行。其结果中的每个值都为空。正如你所建议的,我尝试过使用'coalesce'。它没有帮助。 – vect
除非@ axtavt的答案(这是一个好点)可以解决问题,请更新问题以显示您为问题查询运行的实际代码。 –