3

タイトルに書かれていることとほぼ同じです。@Tableアノテーションがビルド時に使用するスキーマをmaven(またはroo)に管理させたいです。

私は試した

@Table(schema = ${env.schema},name = "MYTABLE")

しかし、これはMavenが機能することを意図した方法ではないという結論に達しました。

4

2 に答える 2

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>

値はビルドプロファイルから取得されませんが、お役に立てば幸いです。私は長い間このアプローチを使用してきました。

于 2013-02-15T22:44:34.983 に答える
1

別の永続性ユニットを設定して、スキーマをテーブルアノテーションから除外できますか?しかし、rooシェルがそれにどのように反応するかはわかりません。

于 2013-02-15T16:00:50.687 に答える