首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

hibernate入门使用系列 2- xml关系映射篇(下)

2012-10-29 
hibernate入门使用系列 2-- xml关系映射篇(上)接上篇 hibernate入门使用系列 1-- 说明篇+试用篇现在起主要

hibernate入门使用系列 2-- xml关系映射篇(上)

接上篇 hibernate入门使用系列 1-- 说明篇+试用篇

现在起主要讲 hibernate中的关系映射。对应的关系主要有 1:1, n:1, n:n。今天主要写1:1。

关系映射篇(上)—— 之1:1

1对1的关系在现实中很常见。比方说:人和身份证。1个身份证对应着一个身份证,一个身份证对应着一个人。那么,我们就以此为原型。进行代码编写。

建立实体模型如右:hibernate入门使用系列 2- xml关系映射篇(下)

?

根据模型,创建数据库:

今天讲的是one-to-one配置。但是,此处用的是many-to-one,这个是什么原因呢?其实,one-to-one就是特殊的many-to-one。

Card.hbm.xml:

?

测试代码如下:

One2OneTest.java

        Card card = new Card();           card.setCardDesc(m_cardDesc1);             Person person = new Person();           person.setName(m_name); // 设置用户名 = m_name           person.setCard(card);             Session session = null;           Transaction tran = null;           try          {               session = factory.openSession();               tran = session.beginTransaction();               session.save(person); //应该先执行insert person才对啊????                             tran.commit();     
11 楼 RyanPoy 2009-01-09   only_java 写道在测试你的函数testsave时,结果为:
Hibernate: insert into card (cardDesc, id) values (?, ?)
Hibernate: insert into person (name, card_id, id) values (?, ?, ?)
我照着你的例子重新做的时候,却发现结果是:(报异常)
Hibernate: insert into hibernatequickuse.person (name, card_id) values (?, ?)
Hibernate: update card set NAME=? where ID=?
不同的是主键的生成方式不一样,你用的是uuid,我用的是identity,数据库自动增长



看了你帖的代码。看不出什么问题。不过从生成的sql语句不同。可以看出,你的配置和我的不一样。不是说主键配置不同。肯定还有其他的地方不同。你再看看。

12 楼 only_java 2009-01-12   RyanPoy 写道
only_java 写道
在测试你的函数testsave时,结果为: Hibernate: insert into card (cardDesc, id) values (?, ?) Hibernate: insert into person (name, card_id, id) values (?, ?, ?) 我照着你的例子重新做的时候,却发现结果是:(报异常) Hibernate: insert into hibernatequickuse.person (name, card_id) values (?, ?) Hibernate: update card set NAME=? where ID=? 不同的是主键的生成方式不一样,你用的是uuid,我用的是identity,数据库自动增长 看了你帖的代码。看不出什么问题。不过从生成的sql语句不同。可以看出,你的配置和我的不一样。不是说主键配置不同。肯定还有其他的地方不同。你再看看。

谢谢,问题解决了!sql是我改动了些,但还是保持单向多对一的,原因是我映射文件的头部是引用2.0的Hibernate,而包却是3.0的!

热点排行