我已經和@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的答案(這是一個好點)可以解決問題,請更新問題以顯示您爲問題查詢運行的實際代碼。 –