參考:點擊這里
媽的,搞了一天了,終於可以了,現在總結下,以防下次再出現這樣痛苦的問題了,有兩個表: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搞得我吐血了。
