• Nhibernate 一对一关系映射(主键映射)


    参考:点击这里

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

  • 相关阅读:
    ms4w php配置xdebug
    转载: js 调用父窗口函数-iframe父窗口和子窗口相互的调用方法
    禁止apache列出站内目录
    块元素和行内元素之间的转换,overflow与visibility
    float浮动定位
    绝对定位和固定定位
    相对定位
    边框样式的设置
    div盒子模型
    CSS修饰表格
  • 原文地址:https://www.cnblogs.com/zhangwei595806165/p/3659101.html
Copyright © 2020-2023  润新知