• 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搞得我吐血了。

  • 相关阅读:
    rsync免密码远程复制文件
    维护中常用的k8s和docker命令
    小程序插件集成functional-page-navigator真机调试报错
    docker私有仓库操作(搭建、运行、添加、删除)
    国内不fq安装K8S四: 安装过程中遇到的问题和解决方法
    国内不fq安装K8S三: 使用helm安装kubernet-dashboard
    国内不fq安装K8S二: 安装kubernet
    国内不fq安装K8S一: 安装docker
    机器学习笔记8:XGBoost
    机器学习笔记7:矩阵分解Recommender.Matrix.Factorization
  • 原文地址:https://www.cnblogs.com/zhangwei595806165/p/3659101.html
Copyright © 2020-2023  润新知