2011-12-27 80 views
11

那么,是否可以混合使用这两种配置而不是仅使用其中的一种?在Hibernate中:是否可以混合实体的注释和XML配置?

我只想保留注解的所有配置,并通过XML读取表格。

可能吗?

非常感谢。

编辑: 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="MyData" table="MyTable" > 
    </class> 
</hibernate-mapping> 

并且不编译dtd。

+0

这篇文章告诉你可以做到这一点。你有没有尝试过? https://forum.hibernate.org/viewtopic.php?f=1&t=931958&view=previous – 2011-12-27 10:21:16

+0

是的,现在我知道是可能的,但我不知道如何填写我的xml配置文件只与表名称。 – ganzux 2011-12-27 10:37:03

回答

19

的Hibernate文档(最新)

请注意,您可以混合使用传统使用hbm.xml和注解 方法。资源元素可以是hbm文件,也可以是XML部署描述符。这个区别对于您的配置过程是透明的。

您可以将带注释的持久类和经典的hbm.cfg.xml 声明与相同的SessionFactory混合使用。但是,您可以多次声明 一个类(无论是带注释还是通过hbm.xml)。您不能在实体 层次结构中混合配置策略(hbm vs注释)。

为了简化从hbm文件到注释的迁移过程,配置机制 检测到注释和hbm文件之间的映射重复。然后HBM文件优先于基于类到类的基于注释元数据的 。您可以使用hibernate.mapping.precedence属性更改 优先级。缺省值为 hbm, class,如果发生冲突,将其更改为class, hbm将优先考虑在hbm文件上注释的 类。