我使用JPA工具从@Entity
类生成表。设置为RESOURCE_LOCAL
时,它可以正常工作。但是,在glassfish服务器上设置数据源并相应地修改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>
有没有办法在不需要触摸配置的情况下使用表生成工具?
答案 0 :(得分:0)
jta-data-source名称是否有效?尝试完全限定网址。
<jta-data-source>java:/jdbc/footest</jta-data-source>