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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM