关于自动导入
一般情况下,你写一个类的映射后,hibernate 会自动的导入到HQL的命名空间中。你在HQL查询时候可以仅仅通过类名,而不是包名.类名来使用指定的类了。但是,存在这样一种情况,如果在不同包中有相同的类名,在HQL中就会引起歧义,不过一个很好的办法就是在hibernate-mapping中关闭自动导入的属性,采取显式导入,然后重命名之。这样,你在HQL中就可以直接写 from Hello,而避免了歧义。
<hibernate-mapping auto-import="false">
<import class="mypackage.Class" rename="Hello" />
</hibernate-mapping>
如例:
hql中使用MyUser:
声明包名称
你并不想每当在关联,子类或者组件映射中命名这个类或者任何其他类时都重复整个包名称。那么可以指定一个package属性:
<hibernate-mapping package="auction.model">
<class name="Item" table="ITEM">
..
</class>
</hibernate-mapping>
现在出现在这个映射文件中的所有未限定的类名都将用被声明的包名作为前缀。
update与insert属性
如:<property name="mydata" update="false" insert="false">
如果update和i nsert都设置false的话,这个字段就不会出现在INSERT和UPDATE语句中。通常不再类中给不可变的属性添加公有的设置方法。
如例:
以插入数据为例 ,输出sql: