这几天来都搞hibernate,有时也是很迷惑的,不过过来了之后回头看看就觉得它的基本原理是很简洁的.
简单为美嘛!!
我主要要讲一下映射文件的写法,这个是基础.
我遇到的问题:
一是查询时:
<property name="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</property>
我是用junit在myeclipse里测试时遇到的,不知为何,先记下.
一定要指定这个工厂方法才可以.
二是一些关于映射文件的问题.
七七八八的问题,主要把所有的属性都要映射到了,例如
<class name="" 属性要指向pojo类
class="" 要指向pojo类
一对一关系,一对多(多对一)关系,
级联关系,cascade="all|delete|delete-anlphe|none"
一对多/一对一关系(首端为一)一般设置cascade="save-update";
多对一/多对多关系(首端为多)一般设置cascade="none"
fetch="join" 指定预先抓取
一对一关联中,以主键关联,要注意外键的方向.
< hibernate-mapping >
< class name ="com.cysoft.integrationAdministration.hibernate.hibernate.Assetsinfo" table ="assetsinfo" catalog ="ia" >
< id name ="id" type ="java.lang.String" >
< column name ="Id" length ="50" />
< generator class ="uuid.hex" ></ generator >
</ id >
< many-to-one name ="assetstype"
class ="com.cysoft.integrationAdministration.hibernate.hibernate.Assetstype"
fetch ="join"
cascade ="none" >
< column name ="assetsType_id" length ="50" unique ="true" />
</ many-to-one >
< one-to-one name ="otherinfo"
class ="com.cysoft.integrationAdministration.hibernate.hibernate.Otherinfo"
fetch ="join"
cascade ="all" >
</ one-to-one >
< one-to-one name ="depreciationinfo"
class ="com.cysoft.integrationAdministration.hibernate.hibernate.Depreciationinfo"
fetch ="join" cascade ="all" />
< property name ="infoId" type ="java.lang.String" >
< column name ="infoId" length ="100" not-null ="true" />
</ property >
< property name ="name" type ="java.lang.String" >
< column name ="name" length ="50" />
</ property >
< property name ="stockDate" type ="java.util.Date" >
< column name ="stockDate" length ="10" />
</ property >
</ class >
</ hibernate-mapping >
<? xml version="1.0" ?>
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
< hibernate-mapping >
< class name ="com.cysoft.integrationAdministration.hibernate.hibernate.Otherinfo" table ="otherinfo" catalog ="ia" >
< id name ="id" type ="java.lang.String" >
< column name ="Id" length ="50" />
< generator class ="foreign" >
< param name ="property" > assetsinfos </ param >
</ generator >
</ id >
< property name ="department" type ="java.lang.String" >
< column name ="department" length ="50" />
</ property >
< property name ="keeper" type ="java.lang.String" >
< column name ="keeper" length ="50" not-null ="true" />
</ property >
< property name ="booker" type ="java.lang.String" >
< column name ="booker" length ="50" />
</ property >
< property name ="bookDate" type ="java.util.Date" >
< column name ="bookDate" length ="10" />
</ property >
< property name ="remark" type ="java.lang.String" >
< column name ="remark" length ="65535" />
</ property >
<!-- <set name="assetsinfos" inverse="true">
<key>
<column name="Id" length="50" not-null="true" />
</key>
<one-to-many class="Assetsinfo" />
</set>
-->
< one-to-one name ="assetsinfos"
class ="com.cysoft.integrationAdministration.hibernate.hibernate.Assetsinfo"
constrained ="true"
></ one-to-one >
</ class >
</ hibernate-mapping >