2010-02-11 155 views
2

我们有用于将模块的实体和逻辑定义为可重用JAR的通用模块(用于配置,安全性,通知等)。唯一强制的依赖关系是JPA实体映射到的表的名称(我们使用JPA批注是可能的,Hibernate批注是JPA没有定义的)。如何重映射JPA实体或将映射推迟到以后的点

有没有办法将JPA实体重新映射到不同的表(理想情况下,应用程序会更改表名前缀以符合应用程序的表前缀名称)?我们不能使用MappedSuperClass注解,因为HQL使用实体名称,我们的DAO在实体上生成。

回答

1

您可以让每个应用程序都提供它自己的orm.xml文件,并在其中包含适当的表映射,并将JPA注释用于其他任何内容。

orm.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" 
    version="1.0"> 

    <entity class="com.mydomain.Customer"> 
    <table name="PROD1_CUSTOMER"/> 
    </entity> 

</entity-mappings> 
+0

好极了!这正是我所需要的。 – 2010-02-13 11:51:38