Hibernate註解配置1 N關聯

2021-09-08 23:56:36 字數 1965 閱讀 8639

多對一

使用 @manytoone 註解定義多對一關係。

@entity()

public class flight implements serializable )

@joincolumn(name="comp_id")

public company getcompany()

...}

其中@joincolumn 註解是可選的,關鍵字段預設值和一對一關聯的情況相似。列名為:主題的關聯屬性名 + 下劃線 + 被關聯端的主鍵列名。本例中為company_id,因為關聯的屬性是company, company的主鍵為 id.

@manytoone 註解有個targetentity屬性,該引數定義了目標實體名。通常不需要定義,大部分情況為預設值。但下面這種情況則需要 targetentity 定義(使用介面作為返回值,而不是常用的實體)。

@entity()

public class flight implements serializable ,targetentity= companyimpl.class)

@joincolumn(name="comp_id")

public company getcompany()

...}

public inte***ce company )

@jointable(name="flight_company",

joincolumns = @joincolumn(name="flight_id"),

inversejoincolumns = @joincolumn(name="comp_id")

)public company getcompany()

...}

集合型別

一對多@onetomany 註解可定義一對多關聯。一對多關聯可以是雙向的。

雙向@entity

public class troop

@entity

public class soldier

單向@entity

public class customer implements serializable

@entity

public class ticket implements serializable

一般通過連線表來實現這種關聯,可以通過@joincolumn註解來描述這種單向關聯關係。上例 customer 通過 cust_id 列和 ticket 建立了單向關聯關係。

通過關聯表來處理單向關聯

@entity

public class trainer

@entity

public class monkey

通過關聯表來處理單向一對多關係是首選,這種關聯通過 @jointable 註解來進行描述。上例子中 trainer 通過trainedmonkeys表和monkey建立了單向關聯關係。其中外來鍵trainer_id關聯到trainer(joincolumns)而外鍵monkey_id關聯到monkey(inversejoincolumns).

預設處理機制

通過連線表來建立單向一對多關聯不需要描述任何物理對映,表名由一下3個部分組成,主表(owner table)表名 + 下劃線 + 從表(the other side table)表名。指向主表的外鍵名:主表表名+下劃線+主表主鍵列名 指向從表的外來鍵定義為唯一約束,用來表示一對多的關聯關係。

@entity

public class trainer

@entity

public class tiger

上述例子中 trainer 和 tiger 通過 trainer_tiger 連線表建立單向關聯關係。其中外來鍵 trainer_id 關聯到 trainer表,而外鍵 trainedtigers_id 關聯到 tiger 表。

解決Hibernate中1 n的問題

一 1 n 在執行查詢時,傳送一條sql語句獲取n個主體物件,當需要使用這n個主體物件的關聯屬性時,hibernate又傳送n條sql語句查詢這個n個主體物件的關聯屬性,這就是1 n問題。listlist session.createquery from dept list 傳送一條sql語句查詢主...

Hibernate表中的1 N的問題

1 所謂1 n的問題,意思是說我們希望查詢一張表裡面的資料,但是在執行sql語句時,會發生多條和另外對應表的sql語句。這樣會降低資料庫執行效率和效能。2.解決1 n的問題的三種方式如下 使用session.creatquery的方式,在對應的類中設定 manytoone fetch fetchty...

1 N圓桌論壇

近年,網際網路行業保持高速增長態勢。無論是中國網民的復合增長率還是網際網路企業的增長率,都是站在世界的最前端的。但隨著網際網路產業2c的流量市場與商業機會接近天花板,同時伴隨著ai 區塊鏈 大資料 雲計算等技術的發展與突破,技術之間的相互取長補短實現了大資料作為生產資料 算力作為生產力 區塊鏈作為生...