Java 使用JPA2.0在GAE数据存储中执行一对一关系时出现StackOverflowerError
我有两个表Java 使用JPA2.0在GAE数据存储中执行一对一关系时出现StackOverflowerError,java,google-app-engine,jpa,google-cloud-datastore,datanucleus,Java,Google App Engine,Jpa,Google Cloud Datastore,Datanucleus,我有两个表文件夹&虚拟系统我试图遵循这一点,但结果总是与StackOverFlowException这里是我迄今为止尝试的 Folder.java @Entity public class Folder implements IsSerializable{ @Id @Column(name = "fvseID") @GeneratedValue(strategy = GenerationType.IDENTITY) @Extension(vendorName =
文件夹
&虚拟系统
我试图遵循这一点,但结果总是与StackOverFlowException
这里是我迄今为止尝试的
Folder.java
@Entity
public class Folder implements IsSerializable{
@Id
@Column(name = "fvseID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String fvseID;
@OneToOne
@JoinColumn(name="vseID")
private VirtualSystemEntry vse=new VirtualSystemEntry();
}
VirtualSystemEntry.java
@Entity
public class VirtualSystemEntry implements IsSerializable {
@Id
@Column(name = "vseID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String id;
String label, image, tooltip;
private int x, y, tray;
@OneToOne(mappedBy="vse")
Folder parent = new Folder();
}
异常跟踪的一部分
INTERNAL_SERVER_ERROR</pre></p><h3>Caused by:</h3><pre>java.lang.StackOverflowError
at java.util.Hashtable.get(Hashtable.java:334)
at java.util.Properties.getProperty(Properties.java:932)
at java.lang.System.getProperty(System.java:653)
at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:63)
at com.cbd.shared.entities.VirtualSystemEntry.<init>(VirtualSystemEntry.java:28)
at com.cbd.shared.entities.Folder.<init>(Folder.java:27)
at com.cbd.shared.entities.VirtualSystemEntry.<init>(VirtualSystemEntry.java:28)
at com.cbd.shared.entities.Folder.<init>(Folder.java:27)
at com.cbd.shared.entities.VirtualSystemEntry.<init>(VirtualSystemEntry.java:28)
at com.cbd.shared.entities.Folder.<init>(Folder.java:27)
at com.cbd.shared.entities.VirtualSystemEntry.<init>(VirtualSystemEntry.java:28)
at com.cbd.shared.entities.Folder..... and so on
内部\u服务器\u错误原因:java.lang.StackOverflower错误
位于java.util.Hashtable.get(Hashtable.java:334)
位于java.util.Properties.getProperty(Properties.java:932)
位于java.lang.System.getProperty(System.java:653)
位于com.google.appengine.tools.development.agent.runtime.runtime.checkRestricted(runtime.java:63)
位于com.cbd.shared.entities.VirtualSystemEntry.init(VirtualSystemEntry.java:28)
位于com.cbd.shared.entities.Folder.init(Folder.java:27)
位于com.cbd.shared.entities.VirtualSystemEntry.init(VirtualSystemEntry.java:28)
位于com.cbd.shared.entities.Folder.init(Folder.java:27)
位于com.cbd.shared.entities.VirtualSystemEntry.init(VirtualSystemEntry.java:28)
位于com.cbd.shared.entities.Folder.init(Folder.java:27)
位于com.cbd.shared.entities.VirtualSystemEntry.init(VirtualSystemEntry.java:28)
位于com.cbd.shared.entities.Folder。。。。。等等
那么我在这里做错了什么??顺便说一下,我使用的是
GWT
,因此您的代码虚拟系统(构造函数)
正在调用您的代码文件夹(构造函数)
,它会递归(您不提供这些方法的代码),很可能是那些类变量“parent”和“vse”的初始化。。。修正初始化;-) 非常感谢您的回复,我相信您会首先回答这个问题:)。因此,我认为您的意思是从两个节点上的每个引用中删除指定的对象:例如:文件夹父节点代码>对吗?因为有参数的构造函数存在JPA
问题,所以我实际上依赖于这两个函数的默认构造函数