繁体   English   中英

在Roo项目中使用javax.persistence.Table @Table批注,如何使用Maven(或Spring)从构建配置文件设置架构?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM