我有一個短暫的屬性的實體:接入領域
@Entity
@Table(name = "asset")
public class Asset {
@Transient
private String locationIdentifier = "N/A";
@SuppressWarnings("unused")
@PostLoad
private void onPostLoad() {
if (location != null) {
locationIdentifier = location.getIdentifier();
}
}
[other stuffs]
}
我試圖訪問locationIdentifier
這種方式在JPA:
String sqlString = "SELECT asset FROM Asset WHERE asset.locationIdentifier = :inputstr";
Query query = entityManager.createQuery(sqlString);
但我得到了一個錯誤: Cannot resolve the property locationIdentifier
我想問一下我使用JPQL如何訪問locationIdentifier
?
對不起,我的英文。提前致謝!
我知道,但是如果我們刪除'@Transient',JPA將在表中爲它創建一個列,並且我不需要它。順便說一句,非常感謝你。 –
不幸的是,這是運氣不好。您必須擁有DB中的列才能在JPA查詢中使用它。想一想 - JPA查詢已轉換爲SQL,並完全在數據庫中執行。查詢不在java內存中執行。 SQL結果集使用JPA ORM映射轉換爲java對象/屬性。 :-) –