在roo项目中使用javax.persistence.Table@Table注释,如何使用maven(或spring)从构建概要文件设置模式?

在roo项目中使用javax.persistence.Table@Table注释,如何使用maven(或spring)从构建概要文件设置模式?,java,maven,jpa,spring-roo,spring-profiles,Java,Maven,Jpa,Spring Roo,Spring Profiles,和标题里说的差不多。我想让maven(或roo)管理@Table注释在构建时使用的模式 我试过了 @Table(schema = ${env.schema},name = "MYTABLE") 但是得出的结论是maven并不是这样工作的。您可以设置另一个持久化单元,并将模式从表注释中删除吗?但我不知道roo shell会如何反应 @Table是一个JPA注释,它与Roo(用于创建应用程序的工具)或Maven(用于编译应用程序的工具,包括依赖项的管理)无关 如果模式在所有环境中都相同,只需使用名

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

我试过了

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

但是得出的结论是maven并不是这样工作的。

您可以设置另一个持久化单元,并将模式从表注释中删除吗?但我不知道roo shell会如何反应

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

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

然而,使用Spring可以实现您的要求:将模式名称参数化

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

例如,在Hibernate中,将Hibernate.default_模式设置为一个变量,该变量的值可以由PropertyPlaceHolderConfigure(在database.properties外部文件或环境属性中)管理


${database.schema}
该值不是从构建概要文件中获得的,但我希望它能帮助您。我已经使用这种方法很长时间了

<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>