参考:点击这里

妈的,搞了一天了,终于可以了,现在总结下,以防下次再出现这样痛苦的问题了,有两个表: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搞得我吐血了。

Nhibernate 一对一关系映射(主键映射)的更多相关文章

  1. 一对一关联关系基于主键映射的异常 IdentifierGenerationException

    具体异常:org.hibernate.id.IdentifierGenerationException: attempted to assign id from null one-to-one pro ...

  2. Hibernate之关联关系映射(一对一主键映射和一对一外键映射)

    1:Hibernate的关联关系映射的一对一外键映射: 1.1:第一首先引包,省略 1.2:第二创建实体类: 这里使用用户信息和身份证信息的关系,用户的主键编号既可以做身份证信息的主键又可以做身份证信 ...

  3. Hibernate中映射一对一关联(按主键映射和外键映射)和组件映射

                                                        Hibernate中映射一对一关联(按主键映射和外键映射)和组件映射 Hibernate提供了两 ...

  4. Hibernate一对一主键映射

    Hibernate一对一主键映射                        ------------------------------                            -- ...

  5. Hibernate征途(七)之复合主键映射和集合映射

    把这两种映射放到一起说,是因为这两种映射不像前面的复用型映射.数量和方向型映射那么分类鲜明,所以放到了这个“其他”里面. 复合主键映射 在关系模型中,复合主键和其他的主键方式没有很大区别,但是反映到对 ...

  6. 【Hibernate步步为营】--复合主键映射具体解释

    上篇文章讨论了继承映射,它是对象模型中最主要的特性,对于继承映射它的主要区分是字段类型的不同,所以在生成表结构时须要有新列来标识数据的类型,能够使用<subclass>标签并在标签中加入d ...

  7. Hibernate 表映射 主键生成策略与复合主键

    主要分析三点: 一.数据表和Java类的映射 : 二.单一主键映射和主键的生成策略 : 三.复合主键的表映射 : 一.数据表和Java类的映射  Hibernate封装了数据库DDL语句,只需要将数据 ...

  8. Hibernate开发之二 映射主键-

    <class name="cn.itcast.e_hbm_id.User" table="user">            <!-- 映射主 ...

  9. Hibernate第三篇【主配置文件、映射文件、复合主键映射】

    前言 目前已经学了如何搭建Hibernate的开发环境,以及Hibernate对应的API了-在快速入门还没讲解的就是配置文件是怎么配置的.因此,本博文主要讲解主配置文件以及映射配置文件.. 主配置文 ...

随机推荐

  1. poj 3254 状态压缩DP

    思路:把每行的数当做是一个二进制串,0不变,1变或不变,找出所有的合法二进制形式表示的整数,即相邻不同为1,那么第i-1行与第i行的状态转移方程为dp[i][j]+=dp[i-1][k]: 这个方程得 ...

  2. 【原】web服务器占有量统计等 web网站

    根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中 1. https://w3techs.com/ nginx 中文站 2. http://www.nginx.cn/doc/

  3. backboneJs 导图

  4. SQL Server批量更新数据

    项目中有一个位置需要批量插入几万条数据,批量insert等待时间简直...用SqlBulkCopy后,之前需要1分钟左右的sql现在只要一眨眼(真的只要一眨眼) 稍后这个功能要加到另外一个项目中,另外 ...

  5. Redis - 发布/订阅模式

    Redis 提供了一组命令可以让开发者实现 “发布/订阅” 模式.“发布/订阅” 可以实现进程间的消息传递,其原理是这样的: “发布/订阅” 模式中包含两种角色,分别是发布者和订阅者.订阅者可以订阅一 ...

  6. Connection to https://dl-ssl.google.com refused 解决方案

    源  起 由于国内不能直接访问Google设在国外的服务器,因此更新Android SDK的时候会遇到 refused 的情况,在命令行ping dl-ssl.google.com显示“请求超时”,解 ...

  7. git常用命令行

    查看.添加.提交.删除.找回,重置修改文件 git help <command> # 显示command的help git show # 显示某次提交的内容 git show $id gi ...

  8. Cocos2d-x优化中图片优化

    在2D游戏中图片无疑是最为重要的资源文件,它会被加载到内存中转换为纹理,由GPU贴在精灵之上渲染出来.它能够优化的方面很多,包括:图片格式.拼图和纹理格式等,下面我们从这几个方面介绍一下图片和纹理的优 ...

  9. (转)理想化的 Redis 集群

    一个豁达的关键是正确乐观的面对失败的系统.不需要过多的担心,需要一种去说那又怎样的能力.因此架构的设计是如此的重要.许多优秀的系统没有进一步成长的能力,我们应该做的是去使用其他的系统去共同分担工作. ...

  10. bzoj1018:[SHOI2008]堵塞的交通traffic

    思路:线段树好题,用线段树维护连通性. 区间[l,r]表示左端点为l,右端点为r,宽度为2的矩形,那么线段树区间维护的就是该区间内的四个角的连通情况,注意是该区间内的连通情况,也就是说只能通过该区间内 ...