Я определен набор таблиц t1, t2, ... Tn:JPA: определение сложных отношений @OneToMany
mysql> desc t1;
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
(...)
+-------------+------------------+------+-----+---------+----------------+
(...)
mysql> desc tN;
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
(...)
+-------------+------------------+------+-----+---------+----------------+
и таблица, которая будет хранить некоторые комментариев о каждой записи в таблицы t1, ... Tn:
mysql> desc postit;
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| foreign_id | int(10) unsigned | NO | MUL | NULL | |
| foreign_table | varchar(20) | NO | MUL | NULL | |
| content | text | NO | | NULL | |
(....)
+---------------+------------------+------+-----+---------+----------------+
Теперь, как я должен определить @Entity для таблицы 't1' ....
@Entity(name="T1")
@Table(name="t1")
public class T1
{
(...)
public List<PostIt> getComments() { ... }
}
, чтобы получить все свои комментарии из таблицы «PostIt» как выражение должно быть
select P from postit as P where P.foreign_table="t1" and P.foreign_id= :t1_id
Есть ли конкретные JPA аннотации, чтобы определить это соотношение, или я должен вводить (как?) В EntityManager в каждом отдельном случае от T1 и вызвать @NamedQuery?
ОК, насколько я понимаю, мне нужно создать «N'-классы для моих« N'-таблиц ». Спасибо. – Pierre