mar*_*cam 11 java spring annotations hibernate hibernate-mapping
我目前正在将我的项目从Hibernate HBM Mappings迁移到Annotations.就处理小班而言,一切都很简单.但我有相同的大类,我尝试混合这个类的映射和注释.我读到这可以通过使用hibernate属性"hibernate.mapping.precedence"并将其设置为"class,hbm"而不是"hbm,class"来实现.(参见:在Hibernate中:是否可以为实体混合注释和XML配置?)
例如,我有以下Document类:
@Entity
@Table(name="DOCUMENT")
public class Document {
@Column(name="DESCRIPTION")
private String description;
}
Run Code Online (Sandbox Code Playgroud)
以及以下Document.hbm.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Document" table="DOCUMENT" >
<id name="id" column="DOCUMENT_ID" type="long" />
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
在我的hibernate.cfg.xml文件中,我把:
<property name="hibernate.mapping.precedence">class, hbm</property>
<mapping class="Document"/>
<mapping resource="Document.hbm.xml"/>
Run Code Online (Sandbox Code Playgroud)
我的问题是: - 如果我把"class,hbm"作为优先级,那么我只有类文档中的注释 - 如果我把"hbm,class"那么我只有我在hbm资源中的映射
如果有办法同时拥有注释和HBM映射,有没有人知道?
谢谢
卡姆兰
PS:我使用:Hibernate 4.1.4和Spring Framework 3.1.1
Pab*_*blo 12
你不能把它们混合在一起.在hibernate注释的1.2节结尾处:
您可以将带注释的持久类和经典的hbm.cfg.xml声明与相同的SessionFactory混合使用.但是,您不能多次声明一个类(无论是注释还是通过hbm.xml).您也不能在实体层次结构中混合配置策略(hbm与注释).
为了简化从hbm文件到注释的迁移过程,配置机制检测注释和hbm文件之间的映射重复.然后,HBM文件在类到类的基础上优先于带注释的元数据.您可以使用hibernate.mapping.precedence属性更改优先级.默认值为hbm,class,将其更改为类,当发生冲突时,hbm将优先考虑带注释的类而不是hbm文件.
使用注释和hbm文件两次声明一个类.因此,在类到类的基础上,一个将优先于另一个(类到类的基础意味着对于每个类,只使用hbm文件或注释).
| 归档时间: |
|
| 查看次数: |
11047 次 |
| 最近记录: |