ebean 에서 orm 테이블 조인

아놔….

Play framework 를 사용하여 웹어플리케이션을 만들고 있는데
일단 Play framework 는 h2 database engine 이 embedded 되어 있어서 편리하게 사용할수 있고 해당 db 는
ebean 을 사용하여 orm 을 사용할수 있다.

난 사실 orm 보다 sqlmap 을 더 선호하지만 한번 사용해 봤다.

생각보다 ebean 은 사용하기 편했고 별다른 문제가 없었지만 서로 다른 테이블 join 시에 문제가 발생했다.
ebean 의 메뉴얼을 보고 해도 안되는 것이었다… ㅜㅜ 즉


SELECT a.data1, b.data2 FROM A as a INNER JOIN B as b a.id = b.id WHERE ...

이런 쿼리를 짜고 싶다고 가정하면

Entity 2 개를 정의하고 (Ebean 에서 Entity 즉 우리가 일반적으로 Java 프로그래밍에서 말하는 Model)

A Entity


@Entity
@Table(name = "a")
public class A extends Model {
...

@OneToMany(mappedBy = "bTest", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
public ArrayList b = new ArrayList<>();
}

B Entity


@Entity
@Table(name = "b")
public class B extends Model {
...

@ManyToOne(fetch = FetchType.EAGER)
public A a;
}

이렇게 정의 해주고


Ebean.find(A.class)
.select("a.data1, b.data2")
.where()
...

해도 조인이 안걸린다.. 그냥 A 테이블만 select 될뿐…
이걸로 몇일동안 메뉴얼도 보고 이래저래 다 해봤는데 실패..

결국

RawSql rawSql = RawSqlBuilder.parse(sql).create();

를 사용하여 직접 SQL 문 작성하여 만들었음…

아 정말 왜 안되는걸까?…

언젠가 해결 되면 해당 포스트에 댓글로 달겠음… ㅜㅜ

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다