Toplink过去要求您为MySQL 显式设置 GenerationType.IDENTITY
,因此请更改它并删除数据库。然后尝试再次运行样本。此外,您可能还想明确设置数据库平台:
<property name="toplink.platform.class.name" value="oracle.toplink.platform.database.MySQL4Platform"/>
我也模糊地记得您必须使用其Java代理运行Toplink,以使其能够与资源本地实体管理器一起正常运行。
但是,我确实使用Eclipselink成功运行了您的示例(由于Toplink已过时,应该使用该示例)。唯一的缺点是我没有方便的MySQL服务器,因此我使用H2来运行它。我使用以下Maven
pom.xml来解决依赖关系:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.randompage</groupId> <artifactId>sandbox</artifactId> <packaging>jar</packaging> <version>1.0</version> <name>sandbox</name> <repositories> <repository> <id>Eclipselink Repo</id> <url>http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/rt/eclipselink/maven.repo</url> </repository> </repositories> <dependencies> <dependency> <groupId>javax.persistence</groupId> <artifactId>javax.persistence</artifactId> <version>2.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>eclipselink</artifactId> <version>2.0.0</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.2.130</version> </dependency> </dependencies></project>
和这个persistence.xml:
<?xml version="1.0" encoding="UTF-8"?><persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="JPATestPU" transaction-type="RESOURCE_LOCAL"> <provider> org.eclipse.persistence.jpa.PersistenceProvider </provider> <class>org.randompage.MyEntity</class> <properties> <property name="javax.persistence.jdbc.user" value="johndoe"/> <property name="javax.persistence.jdbc.password" value="secret"/> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:~/.h2/testdb;FILE_LOCK=NO"/> <property name="eclipselink.ddl-generation" value="create-tables"/> <property name="eclipselink.logging.level" value="INFO"/> </properties> </persistence-unit></persistence>
通过这些设置,您的代码可以按预期运行。



