0

JPA ツールを使用して、@Entityクラスからテーブルを生成します。に設定するRESOURCE_LOCALと、問題なく動作します。ただし、グラスフィッシュ サーバーにデータ ソースをセットアップし、persistence.xmlそれに応じて変更した後、例外が発生して停止します。

javax.persistence.PersistenceException: Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [jdbc/mysqltest].
Internal Exception: javax.naming.NamingException: Lookup failed for 'jdbc/mysqltest' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory,
...

したがって、テーブル構造を変更するたびに、元に戻す必要があります

から

<persistence ...>
    <persistence-unit name="Foo" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/footest</jta-data-source>
        <properties>
            <property name="eclipselink.target-server" value="None"/>
            <property name="eclipselink.logging.level" value="FINEST"/>
        </properties>
    </persistence-unit>
</persistence>

<persistence ...>
    <persistence-unit name="Foo" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="root"/>
            <property name="eclipselink.target-server" value="None"/>
            <property name="eclipselink.logging.level" value="FINEST"/>
        </properties>
    </persistence-unit>
</persistence>

構成に触れる必要なく、テーブル生成ツールを使用する方法はありますか?

4

1 に答える 1

0

jta-data-source 名はまったく機能しますか? URL を完全修飾してみてください。

<jta-data-source>java:/jdbc/footest</jta-data-source>
于 2012-04-23T15:37:21.270 に答える