hibernate映射关系关联查询.docx

上传人:b****6 文档编号:6525257 上传时间:2023-01-07 格式:DOCX 页数:83 大小:58.28KB
下载 相关 举报
hibernate映射关系关联查询.docx_第1页
第1页 / 共83页
hibernate映射关系关联查询.docx_第2页
第2页 / 共83页
hibernate映射关系关联查询.docx_第3页
第3页 / 共83页
hibernate映射关系关联查询.docx_第4页
第4页 / 共83页
hibernate映射关系关联查询.docx_第5页
第5页 / 共83页
点击查看更多>>
下载资源
资源描述

hibernate映射关系关联查询.docx

《hibernate映射关系关联查询.docx》由会员分享,可在线阅读,更多相关《hibernate映射关系关联查询.docx(83页珍藏版)》请在冰豆网上搜索。

hibernate映射关系关联查询.docx

hibernate映射关系关联查询

Hibernate关联关系映射目录

A单向关联

│├─一对一外键单向关联

│├─一对一主键单向关联

│├─一对一连接表单向关联

│├─一对多外键单向关联

│├─一对多连接表单向关联

│├─多对一外键单向关联

│├─多对一连接表单向关联

│└─多对多单向关联

B双向关联

├─一对一外键双向关联

├─一对一主键双向关联

├─一对一连接表双向关联

├─一对多外键双向关联

├─一对多连接表双向关联

└─多对多双向关联

 

Hibernate一对一外键单向关联

2007-08-2213:

17:

58

 标签:

Hibernate一对一   [推送到技术圈]

版权声明:

原创作品,如需转载,请与作者联系。

否则将追究法律责任。

st1\:

*{behavior:

url(#ieooui)}

Hibernate一对一外键单向关联

   事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特例,单向1-1与N-1的映射配置也非常相似。

只需要将原来的many-to-one元素增加unique="true"属性,用于表示N的一端也必须是唯一的,在N的一端增加了唯一的约束,即成为单向1-1。

基于外键的单向1-1的配置将与无连接表N-1关联的many-to-one增加unique="true"属性即可。

一、模型介绍

一个人(Person)对应一个地址(Address)。

二、实体(省略getter、setter方法)

publicclassPerson11fk{

privateintpersonid;

privateStringname;

privateintage;

privateAddress11fkaddress11fk;

publicclassAddress11fk{

privateintaddressid;

privateStringaddressdetail;

三、表模型

 

mysql>descaddress_11fk;

+---------------+--------------+------+-----+---------+----------------+

|Field|Type|Null|Key|Default|Extra|

+---------------+--------------+------+-----+---------+----------------+

|addressid|int(11)|NO|PRI|NULL|auto_increment|

|addressdetail|varchar(255)|YES||NULL||

+---------------+--------------+------+-----+---------+----------------+

mysql>descperson_11fk;

+-----------+--------------+------+-----+---------+----------------+

|Field|Type|Null|Key|Default|Extra|

+-----------+--------------+------+-----+---------+----------------+

|personid|int(11)|NO|PRI|NULL|auto_increment|

|name|varchar(255)|YES||NULL||

|age|int(11)|YES||NULL||

|addressId|int(11)|YES|UNI|NULL||

+-----------+--------------+------+-----+---------+----------------+

四、生成的SQL脚本

 

CREATETABLE`address_11fk`(

    `addressid`int(11)NOTNULLauto_increment,

    `addressdetail`varchar(255)defaultNULL,

    PRIMARYKEY    (`addressid`)

)ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=gbk;

    

CREATETABLE`person_11fk`(

    `personid`int(11)NOTNULLauto_increment,

    `name`varchar(255)defaultNULL,

    `age`int(11)defaultNULL,

    `addressId`int(11)defaultNULL,

    PRIMARYKEY    (`personid`),

    KEY`FK68A8818F3F45AA77`(`addressId`),

    CONSTRAINT`FK68A8818F3F45AA77`FOREIGNKEY(`addressId`)REFERENCES`address_11fk`(`addressid`)

)ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=gbk;

五、映射方法:

 

   在Person中添加Address属性,映射配置为:

--用来映射关联POcolumn是Address在该表中的外键列名,增加unique变成“1-1”-->

 

        

                

                        

                

                

        

--用来映射关联POcolumn是Address在该表中的外键列名,增加unique变成“1-1”-->

六、测试方法

 

publicclassTest_11fk{

        publicstaticvoidmain(String[]args){

                Person11fkp1=newPerson11fk();

    

                p1.setAge(21);

                p1.setName("p1");

    

                Address11fkadd1=newAddress11fk();

                add1.setAddressdetail("郑州市经三路");

    

                p1.setAddress11fk(add1);

    

                Sessionsession=HibernateUtil.getCurrentSession();

                Transactiontx=session.beginTransaction();

                session.save(add1);

                session.save(p1);

                mit();

                HibernateUtil.closeSession();

        }

}

七、测试结果

1):

正常保存.推荐这么干!

session.save(add1);

session.save(p1);

Hibernate:

insertintoADDRESS_11fk(addressdetail)values(?

Hibernate:

insertintoPERSON_11fk(name,age,addressId)values(?

?

?

2):

正常保存.

session.save(p1);

session.save(add1);

Hibernate:

insertintoPERSON_11fk(name,age,addressId)values(?

?

?

Hibernate:

insertintoADDRESS_11fk(addressdetail)values(?

Hibernate:

updatePERSON_11fksetname=?

age=?

addressId=?

wherepersonid=?

3):

正常保存.

//session.save(p1);

session.save(add1);

Hibernate:

insertintoADDRESS_11fk(addressdetail)values(?

4):

发生异常,不能保存.

session.save(p1);

//session.save(add1);

Hibernate:

insertintoPERSON_11fk(name,age,addressId)values(?

?

?

Exceptioninthread"main"org.hibernate.TransientObjectException:

com.lavasoft.dx._1_1_fk.Address11fk

Hibernate一对一主键单向关联

2007-08-2215:

26:

52

 标签:

Hibernate一对一   [推送到技术圈]

版权声明:

原创作品,如需转载,请与作者联系。

否则将追究法律责任。

Hibernate一对一主键单向关联

1-1的关联可以基于主键关联,但基于主键关联的持久化类不能拥有自己的主键生成策略,它的主键由关联类负责生成。

另外,另外,增加one-to-one元素来关联属性,必须为one-to-one元素增加constrained="true"属性,表明该类主键由关联类生成。

一、模型介绍

一个人(Person)对应一个地址(Address)。

二、实体(省略getter、setter方法)

publicclassPerson11pk{

privateintpersonid;

privateStringname;

privateintage;

privateAddress11pkaddress11pk;

publicclassAddress11pk{

privateintaddressid;

privateStringaddressdetail;

三、表模型

mysql>descaddress_11pk;

+---------------+--------------+------+-----+---------+----------------+

|Field|Type|Null|Key|Default|Extra|

+---------------+--------------+------+-----+---------+----------------+

|addressid|int(11)|NO|PRI|NULL|auto_increment|

|addressdetail|varchar(255)|YES||NULL||

+---------------+--------------+------+-----+---------+----------------+

mysql>descperson_11pk;

+----------+--------------+------+-----+---------+-------+

|Field|Type|Null|Key|Default|Extra|

+----------+--------------+------+-----+---------+-------+

|personid|int(11)|NO|PRI|||

|name|varchar(255)|YES||NULL||

|age|int(11)|YES||NULL||

+----------+--------------+------+-----+---------+-------+

四、生成的SQL脚本

/*Formattedon2007/08/2214:

40(QP5v5.50)*/

CREATETABLE`address_11pk`(

`addressid`int(11)NOTNULLauto_increment,

`addressdetail`varchar(255)defaultNULL,

PRIMARYKEY(`addressid`)

)ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=gbk;

/*Formattedon2007/08/2214:

41(QP5v5.50)*/

CREATETABLE`person_11pk`(

`presonid`int(11)NOTNULL,

`name`varchar(255)defaultNULL,

`age`int(11)defaultNULL,

PRIMARYKEY(`presonid`),

KEY`FK68A882C591BB393E`(`presonid`),

CONSTRAINT`FK68A882C591BB393E`FOREIGNKEY(`presonid`)REFERENCES`address_11pk`(`addressid`)

)ENGINE=InnoDBDEFAULTCHARSET=gbk;

五、映射方法:

在Person中配置id生成策略为:

--基于主键关联时,主键生成策略是foreign,表明根据关联类生成主键-->

--关联持久化类的属性名-->

address11pk

......

--用于映射1-1关联-->

--基于主键关联时,主键生成策略是foreign,表明根据关联类生成主键-->

--关联持久化类的属性名-->

address11pk

--用于映射1-1关联-->

六、测试方法

publicclassTest_11pk{

publicstaticvoidmain(String[]args){

Person11pkp1=newPerson11pk();

p1.setAge(21);

p1.setName("p1");

Address11pkadd1=newAddress11pk();

add1.setAddressdetail("郑州市经三路");

p1.setAddress11pk(add1);

Sessionsession=HibernateUtil.getCurrentSession();

Transactiontx=session.beginTransaction();

session.save(add1);

session.save(p1);

mit();

HibernateUtil.closeSession();

}

}

七、测试结果

1):

正常保存.推荐这么干!

session.save(add1);

session.save(p1);

Hibernate:

insertintoADDRESS_11fk(addressdetail)values(?

Hibernate:

insertintoPERSON_11fk(name,age,addressId)values(?

?

?

2):

正常保存.

session.save(p1);

session.save(add1);

Hibernate:

insertintoPERSON_11fk(name,age,addressId)values(?

?

?

Hibernate:

insertintoADDRESS_11fk(addressdetail)values(?

Hibernate:

updatePERSON_11fksetname=?

age=?

addressId=?

wherepersonid=?

3):

正常保存.

//session.save(p1);

session.save(add1);

Hibernate:

insertintoADDRESS_11fk(addressdetail)values(?

4):

发生异常,不能保存.

session.save(p1);

//session.save(add1);

Hibernate:

insertintoPERSON_11fk(name,age,addressId)values(?

?

?

Exceptioninthread"main"org.hibernate.TransientObjectException:

com.lavasoft.dx._1_1_fk.Address11fk

Hibernate一对一连接表单向关联

2007-08-2215:

53:

57

 标签:

Hibernate一对一连接表   [推送到技术圈]

版权声明:

原创作品,如需转载,请与作者联系。

否则将追究法律责任。

Hibernate一对一连接表单向关联

这种情况很少见,但Hibernate同样允许采用连接表关联1-1.有连接表的1-1同样只需要将N-1的many-to-one元素增加unique="true"属性即可。

一、模型介绍

一个人(Person)对应一个地址(Address)。

二、实体(省略getter、setter方法)

publicclassPerson11tab{

privateintpersonid;

privateStringname;

privateintage;

privateAddress11tabaddress11tab;

publicclassAddress11tab{

privateintaddressid;

privateStringaddressdetail;

三、表模型

mysql>descaddress_11tab;

+---------------+--------------+------+-----+---------+----------------+

|Field|Type|Null|Key|Default|Extra|

+---------------+--------------+------+-----+---------+----------------+

|ad

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1