与标题中的内容相似。我想让maven(或roo)管理@Table注释在构建时使用的模式。
我试过
@Table(schema = ${env.schema},name = "MYTABLE")
但得出的结论是,这不是maven的工作方式。
答案 0 :(得分: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>
该值不是从构建配置文件中获取的,但我希望它对您有所帮助。我已经使用这种方法很长时间了。
答案 1 :(得分:1)
您是否可以设置另一个持久性单元并将模式从表注释中删除?我不知道roo shell会如何反应。