Java google应用程序引擎类型(“XXX”)上的JPA不是实体的JPA,但需要用于此操作
嗨,我有一个用@entity注释的实体类,所以它可以在google app engine上用JPA持久化 我的班级是这样的:Java google应用程序引擎类型(“XXX”)上的JPA不是实体的JPA,但需要用于此操作,java,google-app-engine,maven,jpa,datanucleus,Java,Google App Engine,Maven,Jpa,Datanucleus,嗨,我有一个用@entity注释的实体类,所以它可以在google app engine上用JPA持久化 我的班级是这样的: @Entity public class DataUrls { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key key; private String postalCode; private List<String> urls; public Key getKey(
@Entity
public class DataUrls {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
private String postalCode;
private List<String> urls;
public Key getKey() {
return key;
}
public void setKey(Key key) {
this.key = key;
}
public String getPostalCode() {
return postalCode;
}
public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}
public List<String> getUrls() {
return urls;
}
public void setUrls(List<String> urls) {
this.urls = urls;
}
}
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>maven-datanucleus-plugin</artifactId>
<version>${datanucleus.jpa.version}</version>
<configuration>
<api>JPA</api>
<metadataIncludes>com/appspot/blabla/model/entities/*.class</metadataIncludes>
<verbose>true</verbose>
<enhancerName>ASM</enhancerName>
</configuration>
<dependencies>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>${datanucleus.jpa.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
但是,当我尝试写入数据库时,会收到以下消息:
Type ("XXX") is not that of an entity but needs to be for this operation
我理解应用程序为什么会这样说,但是由于增强器插件的日志记录通知类已增强,我想知道为什么会发生这种情况。我今天遇到了同样的问题。我想一旦我找到了解决方案,我会和大家分享
除了一个不同的用例(显然),我的代码与你的代码几乎相同。问题是我忘记了用我试图持久化的新实体的位置更新persistence.xml文件。因此,DN没有将类识别为实体的原因。我今天遇到了同样的问题。我想一旦我找到了解决方案,我会和大家分享
除了一个不同的用例(显然),我的代码与你的代码几乎相同。问题是我忘记了用我试图持久化的新实体的位置更新persistence.xml文件。因此,DN没有将类识别为实体的原因。也许您的持久性代码与此相关?由于您说它会导致一些异常(也有堆栈跟踪),因为我是通过maven运行dev服务器的,所以没有堆栈跟踪,不过我添加了持久性代码。当我进入调试并检查对象时,我会看到很多JDO的东西,比如jdoStateManager和jdoDetachedState。如果需要,可以通过捕获异常获得堆栈跟踪。您还拥有一个包含大量信息的日志。类“com.appspot.blabla.model.entities.DataUrls”必须是可持久的,但找不到该类的元数据/注释。请检查元数据/注释是否定义在有效的文件位置。因此,通过反编译检查类的增强,并检查类路径中的内容;日志会告诉您在什么位置有什么。通过持久性代码进行反编译可能与此相关?由于您说它会导致一些异常(也有堆栈跟踪),因为我是通过maven运行dev服务器的,所以没有堆栈跟踪,不过我添加了持久性代码。当我进入调试并检查对象时,我会看到很多JDO的东西,比如jdoStateManager和jdoDetachedState。如果需要,可以通过捕获异常获得堆栈跟踪。您还拥有一个包含大量信息的日志。类“com.appspot.blabla.model.entities.DataUrls”必须是可持久的,但找不到该类的元数据/注释。请检查元数据/注释是否定义在有效的文件位置。因此,通过反编译检查类的增强,并检查类路径中的内容;日志会告诉您在什么位置有什么。通过
public void persistDataURLs(DataUrls dataUrls){
EntityManager em = EMF.getFactory().createEntityManager();
em.persist(dataUrls);
em.close();
}
Type ("XXX") is not that of an entity but needs to be for this operation