AppEngine - JPA - 简单的OneToMany和ManyToOne关系不起作用

时间:2013-06-06 08:49:39

标签: google-app-engine jpa one-to-many many-to-one

我有一个简单的关系:

  • 一个类别类,包含零到n个问题
  • 一个问题类,属于一个类别

我只是想设置关系并创建一个类别,然后列出这个类别,我总是得到一个503 Service Unavailable错误的空消息......

"domain": "global",
"reason": "backendError",
"message": ""

我的课程如下所示:

分类

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String key;

private String name;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "category")
private List<Question> questions = new ArrayList<Question>();

问题:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String key;

private String question;

@ManyToOne
private Category category;

没有这些关系,我没有问题来插入类别并列出它们,但是如果我添加关系,它总是失败...我已经尝试了很多可能性,它总是无法在我之后列出类别插入一个...

如果没有关系,并且每个问题使用fkCategory字符串字段而不是category字段,我可以使一切正常工作,但就我所知,这是无效的,因为在这种“手动”方式,fkCategory字段不会被编入索引,我是对的吗?

1 个答案:

答案 0 :(得分:0)

  1. 插入应该适用于类别和问题关系。

  2. 我认为问题在于上市。

    • 使用数据存储区,您无法使用连接查询,因为这不是正常的RDMS,请查看“与传统数据库的比较”部分&#34;在https://developers.google.com/appengine/docs/java/datastore/
    • 您可以通过获取所有类别列表来检查这一点(不要触及类别对象上的问题关系)
    • 与FetchType.Lazy的问题集类别关系并列出所有问题(不要触及类别关系)
  3. 查看https://groups.google.com/forum/?fromgroups#!topic/google-appengine-java/VMg9xiQv1jM

  4. 上的整个帖子