频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
Nhibernate 一对一关系映射(主键映射)
2014-04-12 08:42:55      个评论      
收藏   我要投稿
现在总结下,以防下次再出现这样痛苦的问题了,有两个表:user(用户)和Blog(设置表),它们之间的关系正如我所说的是一对一的关系。现在我们来映射这两个文件:

 

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"

  namespace="MyMvc4Project.Models" assembly="MyMvc4Project.Models">

    <class name="MyMvc4Project.Models.User" table="Users" lazy="false">

        <id name="Id">

            <column name="Id" sql-type="varchar(40)" not-null="true"/>

            <generator class="uuid.hex" />

        </id>

        <one-to-one name="Blog" class="Blog" cascade="all"></one-to-one>

    </class>

</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"

  namespace="MyMvc4Project.Models" assembly="MyMvc4Project.Models">

    <class name="MyMvc4Project.Models.Blog" table="Blog" lazy="false">

        <id name="Id">

            <column name="Id" sql-type="varchar(40)" not-null="true"/>

            <generator class="foreign">

                <param name="property">User</param>

            </generator>

        </id>

        <one-to-one name="User" class="User" constrained="true"></one-to-one>

    </class>

</hibernate-mapping>

现在测试如何保存数据:

 

var userDal = new UserDal();

var blogDal = new BlogDal();

var user = new User{

                       Name = name,

                       Password = password,

                       PostTitle = posttitle,

                       CreateTime = DateTime.Now,

                       Avatar = fileUrl

                   };

var blog = new Blog { User = user };

 

user.Blog = blog;

blogDal.Save(blog);

userDal.Save(user);

总结:

 

这样就成功了保存了数据,搞了“老子”一天的时间了,唉,其实hibernate一对一关联还有外键的关联等,我就使用了这个主键关联。

 

1:如果hibernate设置了

 

<id name="Id">

            <column name="Id" sql-type="varchar(40)" not-null="true"/>

            <generator class="uuid.hex" />

</id>

这样的代码,你就可以不用在添加数据时用这样的代码了:Guid.NewGuid。(以前居然不知道,真是失败)。

 

 

 

2:

 

<generator class="foreign">

 

<param name="property">User</param>

 

</generator>

 

这个代码表示的意思是,Blog的主键参考User表里的主键值。

 

 

 

3:也就是我上面保存数据的时候,我不确定是不是这样的操作,真的一点自信都没有,如果博友有的是hibernate专家,希望进来帮我看看,是不是这样保存数据(重要),还有一对一是不是这样配置的,唉,hibernate搞得我吐血了。

点击复制链接 与好友分享!回本站首页
相关TAG标签 一对一
上一篇:java学习笔记(十九)——Java 日志记录 AND log4j
下一篇:设计模式之模版方法模式
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站