가정하자 나는데이터베이스에서 엔티티를 가져 오지 않고 JPA에서 엔티티의 ID를 가져 오겠습니까?
@Entity
public class Foo {
@Id
private Integer id;
@Column(...)
private String data;
}
@Entity
public class Bar {
@Id
private Integer id;
@OneToOne(fetchType=LAZY)
@JoinColumn(name="foo_fk")
private Foo foo;
@Column(...)
private String x;
@Column(...)
private String y;
}
내가 예를 SELECT Bar b FROM Bar WHERE b.x = :xValue
에 대한 몇 가지 검색 기준에 맞는 모든 바 개체를 찾을 수있다 싶은 것은 내가하고 싶은으로 반복 일대일 관계를 다음과 같은 두 가지 JPA 엔티티입니다했다 결과는 foo의 기본 키와 값의 라인을 따라 y ie 코드를 설정하고 추출합니다. 내가 bar.getFoo().getId()
을 수행 할 때의 [선택] ORM 문제를 가지고있다 않도록하려면 무엇
List<Bar> results = // query to get all the results that meet value x
for(Bar bar: results) {
String x = bar.getX();
String y = bar.getY();
Integer fooId = bar.getFoo().getId(); // at this point Hibernate pulls back foo from the db
// do something with x,y and fooId
}
. SELECT new com.example.MyResult(b.x,b.y,b.foo.id) FORM Bar b WHERE b.x = :xValue
보고서 쿼리를 작성하지 않고 bar.getFoo().getId()
에 대한 선택을 피할 수있는 방법이 있습니까? 나는 Hibernate 3.6.10과 JPA 2를 사용하고있다. 내가 원하는 것을 할 수 있다면 Hibernate 4.1.x로 업그레이드하는 것이 행복하다.
Atleast with Hibernate + Postgres는 전체 객체를 되 돌리지 않을 것입니다 (나는 당신의 걱정이라고 생각합니다). 아마도 select select select를 만들거나 dummy inner inner join을 사용하여이를 보장 할 수 있습니다. –
@Adam 더미 내부 결합을 사용하여 기술의 예를 들어 줄 수 있습니까? – ams