程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> hibernate annoation (八 關聯映射)

hibernate annoation (八 關聯映射)

編輯:J2EE

onetoone:單向

1,主鍵關聯:

在關聯放使用@OneToOne

sql語句:(類代碼見同前面的代碼)

Java代碼

create table A (id integer not null auto_increment, aname varchar(255), b_id integer, primary key (id))
create table B (id integer not null auto_increment, bname varchar(255), primary key (id))
alter table A add index FK41FCD34905 (b_id), add constraint FK41FCD34905 foreign key (b_id) references B (id) 

可以使用@PrimaryKeyJoinColumn進行關聯

2 雙向:

在關聯方使用 

@OneToOne(cascade=CascadeType.ALL)

@JoinColumn(name="b")

被關聯方使用

@OneToOne(mappedBy="b")

最終sql:

Java代碼
create table A (id integer not null auto_increment, aname varchar(255), b integer, primary key (id))
create table B (id integer not null auto_increment, bname varchar(255), primary key (id))
alter table A add index FK41FCA54B4F (b), add constraint FK41FCA54B4F foreign key (b) references B (id)

如果不寫

@OneToOne(mappedBy="b")則會在被關聯放也生成一個字段

最終代碼:

Java代碼

create table A (id integer not null auto_increment, aname varchar(255), i_id integer, primary key (id))
create table B (id integer not null auto_increment, bname varchar(255), a_id integer, primary key (id))
alter table A add index FK41FCD6779E (i_id), add constraint FK41FCD6779E foreign key (i_id) references B (id)
alter table B add index FK42FCD2D4A5 (a_id), add constraint FK42FCD2D4A5 foreign key (a_id) references A (id)

如果沒有寫@JoinColumn(name="b")則默認是關聯屬性名+下劃線+id

最終sql:

Java代碼

create table A (id integer not null auto_increment, aname varchar(255), b_id integer, primary key (id))
create table B (id integer not null auto_increment, bname varchar(255), primary key (id))
alter table A add index FK41FCD34905 (b_id), add constraint FK41FCD34905 foreign key (b_id) references B (id)

可以使用@JoinColumn(referencedColumnName="bname")讓主關聯方不關聯被關聯放的主鍵

最終sql

Java代碼

create table A (id integer not null auto_increment, aname varchar(255), b_bname varchar(255), primary key (id))
create table B (id integer not null auto_increment, bname varchar(255), primary key (id), unique (bname))
alter table A add index FK41E47CD6BD (b_bname), add constraint FK41E47CD6BD foreign key (b_bname) references B (bname)

3 關聯表

使用

@OneToOne(cascade=CascadeType.ALL)
 @JoinTable(name="centert",joinColumns=@JoinColumn(name="aid"),inverseJoinColumns=@JoinColumn(name="bid"))

最終sql:

寫道

create table A (id integer not null auto_increment, aname varchar(255), primary key (id))
create table B (id integer not null auto_increment, bname varchar(255), primary key (id))
create table centert (bid integer, aid integer not null, primary key (aid))
alter table centert add index FK27A6BEBFFCA6C7EA (bid), add constraint FK27A6BEBFFCA6C7EA foreign key (bid) references B (id)
alter table centert add index FK27A6BEBFFCA6C428 (aid), add constraint FK27A6BEBFFCA6C428 foreign key (aid) references A (id) 

manytoone

和onetoone很相似

特殊情況:果不寫:mappedBy這會產生中間表:

Java代碼

create table A (id integer not null auto_increment, aname varchar(255), i_id integer, primary key (id))
create table B (id integer not null auto_increment, bname varchar(255), primary key (id))
create table B_A (B_id integer not null, a_id integer not null, unique (a_id))
alter table A add index FK41FCD6779E (i_id), add constraint FK41FCD6779E foreign key (i_id) references B (id)
alter table B_A add index FK10384FCD34905 (B_id), add constraint FK10384FCD34905 foreign key (B_id) references B (id)
alter table B_A add index FK10384FCD2D4A5 (a_id), add constraint FK10384FCD2D4A5 foreign key (a_id) references A (id)

targetEntity屬性可以關聯接口

例如接口代碼

Java代碼

public interface I {
 
}

class B implments I

關聯方:

Java代碼

private I i;
@ManyToOne(targetEntity=B.class)
 public I getI() {
 return i;
 }

最終sql:

Java代碼

create table A (id integer not null auto_increment, aname varchar(255), i_id integer, primary key (id))
create table B (id integer not null auto_increment, bname varchar(255), primary key (id))
alter table A add index FK41FCD6779E (i_id), add constraint FK41FCD6779E foreign key (i_id) references B (id)


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved