0
我試圖將數據訪問層的一部分轉換爲休眠狀態,並且遇到了一些麻煩,從而無法獲取收集關聯權。我正在使用hibernate註釋,並且有兩個相關的實體(這裏的基本配置正在工作,而不是連接)。有些名字已經模糊:使用舊版映射表的休眠註釋
春季3,休眠3,Java 6中,MySQL的5
集裝箱具有視頻列表。這兩個類都使用註釋映射到休眠狀態。
不幸的是,映射表有一個不尋常的模式。它看起來像這樣:
container_mapping:
+-----------------+------------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+-------------------+-------+
| internal_id | int(10) unsigned | NO | PRI | | |
| external_id | varchar(255) | NO | PRI | | |
| mapping_type_id | int(4) unsigned | NO | PRI | | |
| creation_date | timestamp | NO | | CURRENT_TIMESTAMP | |
+-----------------+------------------+------+-----+-------------------+-------+
INTERNAL_ID映射到container.id和EXTERNAL_ID映射到video.id當mapping_type_id = 2
的ID給拉了回來查詢:
select * from container c, container_mapping cm, video v where cm.mapping_type_id=2 and c.episode_id = cm.internal_id and cm.external_id = v.id and c.episode_id=?;
我可以似乎沒有找到一個很好的例子來讓一個集合與一個具有特定值的連接字段連接。此時我正在抓秸稈。在(不完全)的版本是在這裏:
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable(name="container_mapping",
joinColumns = @JoinColumn(name="external_id"))
private List<Video> videos = Lists.newArrayList();
人對如何進行任何指針?
Ahhhh,我以前沒有看到@WhereJoinTable註釋。真棒!我早些時候有了InverseJoinColumn,但是我把它拿出來,因爲它感覺我正在抓着吸管。我給了這一槍。 – liam 2011-03-24 21:12:32