【发布时间】:2014-08-24 18:20:37
【问题描述】:
如何使用Google Application Engine (GAE) 和Java Data Objects (JDO) 实现双向一对一映射?
我有一个包含contactInfo 对象的User 类和一个包含user 对象的ContactInfo 类
@PersistenceCapable(identityType ="APPLICATION", detachable = "true")
public class User{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
private String name;
@Persistent(dependent = "true")
private ContactInfo child;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ContactInfo getChild() {
return child;
}
public void setChild(ContactInfo child) {
this.child = child;
}
}
@PersistenceCapable(identityType ="APPLICATION", detachable = "true")
public class ContactInfo {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent(mappedBy = "child")
private User parent;
private String contactDetail;
public Key getId() {
return id;
}
public void setId(Key id) {
this.id = id;
}
public String getContactDetail() {
return contactDetail;
}
public void setContactDetail(String contactDetail) {
this.contactDetail = contactDetail;
}
}
我在从 API 资源管理器测试 API 时遇到以下错误
com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.demo.jdo.ContactInfo[\"user\"]->com.demo.jdo.User[\"contactInfo\"]->com.demo.jdo.ContactInfo[\"user\"]-
【问题讨论】:
标签: rest google-app-engine google-cloud-datastore jdo