나는 일시적인 속성을 가진 엔티티를 가지고 :액세스 필드
@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는 테이블에 해당 열을 생성 할 것이고 필요없는 것을 만들 것입니다. Btw, 정말 고마워. –
불행히도, 그것은 불행입니다. JPA 쿼리에서 사용하려면 DB에 열이 있어야합니다. 그것에 대해 생각해보십시오 - JPA 쿼리는 SQL로 변환되고 DB에서 완전히 실행됩니다. 쿼리는 Java 메모리에서 실행되지 않습니다. SQL 결과 세트는 JPA ORM 맵핑을 사용하여 Java 오브젝트/속성으로 변환됩니다. :-) –