和标题里说的差不多。我想让 maven(或 roo)管理 @Table 注释在构建时使用的模式。
我试过了
@Table(schema = ${env.schema},name = "MYTABLE")
但得出的结论是,这不是 maven 的工作方式。
和标题里说的差不多。我想让 maven(或 roo)管理 @Table 注释在构建时使用的模式。
我试过了
@Table(schema = ${env.schema},name = "MYTABLE")
但得出的结论是,这不是 maven 的工作方式。
@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>
该值不是从构建配置文件中获得的,但我希望它对您有所帮助。我已经使用这种方法很长时间了。
您能否设置另一个持久性单元并将模式排除在表注释之外?我不知道 roo shell 对此有何反应。