0
我正在開發一個遺留應用程序,並被要求集成Hibernate(這是我第一次使用它)。這個程序有3個表(其中包括)如下:從3個表中定義hibernate實體
Table SITE Table PARAMS Table TRANS
========== ============== ===============
pk: id (INT) pk: p_id (INT) pk: t_id (INT)
lang_id (INT) name (CHAR) fk: p_id (INT)
value (INT) fk: lang_id (INT)
text (CHAR)
然後,我需要得到PARAMS參數與他們的翻譯,存儲在TRANS一起,根據爲應用程序定義的語言,這是存儲在現場。
我一直在努力嘗試理解如何使表的連接獲取實體的數據。我嘗試使用@JoinTable
,但我無法弄清楚如何進行3路加入,所以我開始嘗試@SecondaryTables
,但沒有運氣。
我定義了這個實體來映射請求的數據(我知道這不會像現在這樣),我試圖找出正確的方式來進行連接。
@Entity
@Table(name = "params")
@SecondaryTables(
{
@SecondaryTable(name = "trans", pkJoinColumns = @PrimaryKeyJoinColumn(name = "p_id")),
})
public class Tparam implements Serializable
{
@Id
@GeneratedValue
@Column(name = "p_id")
private int id;
@Column(name = "name")
private String Name;
@Column(name = "text")
private String visibleText
...
}
任何幫助表示讚賞!
以供參考,該SQL查詢給了我什麼,我想:
SELECT * FROM params, lang, site WHERE params.p_id = lang.p_id AND lang.lang_id = site.lang_id;
經過幾次不同的嘗試,這是更好的選擇。謝謝@Moodi。 – Rodrigo