![](/img/trans.png)
[英]Compile error because of “cannot find annotation method name() in type javax.persistence.Table”
[英]Using javax.persistence.Table @Table annotation in roo project, how can I use maven (or spring) to set the schema from a build profile?
标题中的内容差不多。 我想让Maven(或Roo)在构建时管理@Table批注使用的架构。
我试过了
@Table(schema = ${env.schema},name = "MYTABLE")
但是得出的结论是,这不是行家的本意。
@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外壳会如何反应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.