タイトルに書かれていることとほぼ同じです。@Tableアノテーションがビルド時に使用するスキーマをmaven(またはroo)に管理させたいです。
私は試した
@Table(schema = ${env.schema},name = "MYTABLE")
しかし、これはMavenが機能することを意図した方法ではないという結論に達しました。
タイトルに書かれていることとほぼ同じです。@Tableアノテーションがビルド時に使用するスキーマをmaven(またはroo)に管理させたいです。
私は試した
@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シェルがそれにどのように反応するかはわかりません。