3

和标题里说的差不多。我想让 maven(或 roo)管理 @Table 注释在构建时使用的模式。

我试过了

@Table(schema = ${env.schema},name = "MYTABLE")

但得出的结论是,这不是 maven 的工作方式。

4

2 回答 2

4

@Table 是 JPA 注解,它与 Roo(创建应用程序的工具)或 Maven(编译应用程序的工具,包括对依赖项的管理)无关

如果架构在所有环境中都相同,只需使用名称(注解属性的唯一可用选项)

但是,使用 Spring 可以实现您所要求的:将模式名称参数化。

您可以在 org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean 中配置 jpaProperties 属性

例如,在 Hibernate 中,将 hibernate.default_schema 设置为一个变量,其值可以由 PropertyPlaceHolderConfigurer 管理(在 database.properties 外部文件或环境属性中)

<context:property-placeholder location="classpath*:META-INF/spring/*.properties"/>
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
    <property name="persistenceUnitName" value="persistenceUnit"/>
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaProperties">
       <props>
        <prop key="hibernate.default_schema">${database.schema}</prop>
    </property>
</bean>

该值不是从构建配置文件中获得的,但我希望它对您有所帮助。我已经使用这种方法很长时间了。

于 2013-02-15T22:44:34.983 回答
1

您能否设置另一个持久性单元并将模式排除在表注释之外?我不知道 roo shell 对此有何反应。

于 2013-02-15T16:00:50.687 回答