2010-08-28 2 views
2

У меня есть таблицы, которые я хочу сопоставить друг с другом. Я хочу заполнить 2 выпадающих списка: code_r и code_l. Когда я выбираю значение из кода_r, code_l должен отображать только определенные записи. В моей базе данных у меня есть 2 таблицы:Базовый спящий режим/JPA Сопоставление вопроса

Table code_r 
=================== 
CODE   INT 
LIBELLE  VARCHAR 

И

Table code_l 
=================== 
ID   BIGINT 
CODE_R_ID INT 
LIBELLE  VARCHAR 

Один code_r может иметь несколько code_l, связанные с ним (на основе code_r_id (не определен в качестве внешнего ключа в определении code_l .) Конечно, code_l может быть связан только с одним code_r

следующий SQL-запрос работает отлично:.

SELECT * 
FROM code_r r 
left join `code_l` l on l.code_r_id = r.code; 

Как я могу реализовать это, используя аннотации JPA/Hibernate-3.5 в классах CodeR и CodeL?

Любая помощь будет оценена по достоинству. Заранее спасибо.

ответ

2

С Hibernate (и теперь стандартизированы в JPA 2.0), вы можете использовать однонаправленный один-ко-многим ассоциации без присоединиться к столу с помощью JoinColumn аннотацию:

аннотировать Coder так:

@Entity 
public class CodeR { 
    @Id 
    private Integer code; 
    private String libelle; 

    @OneToMany 
    @JoinColumn(name="CODE_R_ID") 
    Set<CodeL> codeLs = new HashSet<CodeL>(): 

    // getters, setters 
} 

И CodeL

@Entity 
public class CodeL { 
    @Id 
    private Integer id; 
    private String libelle; 

    // getters, setters, equals, hashCode 
} 

И запрос JPQL:

SELECT r FROM CodeR LEFT JOIN r.codeLs 
+0

+1 стандартизированной JPA 2.0 @JoinColumn без @JoinTable –

+0

и поздравления заработав золотой значок на Hibernate –

+0

@Arthur Большое спасибо, искренне оценили. Следующая цель, JPA :) –

2

в классе Coder:

@OneToMany (mappedBy = "code_r_id")

Коллекция elementsFromL;


в классе CodeL:

@ManyToOne

Coder code_r_id;

+0

Спасибо за ваш ответ мистер Q.C :-) – kiwifrog

Смежные вопросы