在Play 1.1上使用Objectify 1.1rc和CRUD的M:1关系问题

时间:2010-12-06 21:48:07

标签: crud playframework objectify

我有一个非常奇怪的问题,也许你们其中一个人可以解决一些问题 在上面。我很感激:)

我正在使用Objectify 1.1rc模块为Play开发一个应用程序!框架1.1。我有2个相关的对象,其相关部分是:

public class User extends ObjectifyModel<User> {
  [...]
    public List<Key<Theatre>> theatres;
  [...]    
}

public class Theatre extends ObjectifyModel<Theatre> {
  [...]
}

一些背景知识:

  • 我正在使用Google代码存储库中的Objectify 1.1rc(Play存储库中的模块似乎因Play!1.1而失败)示例应用程序正常运行
  • 我将现有对象中的对象基于Play Framework(Showcase)的Objectify-1.1rc模块提供的示例应用程序上正常工作。
  • 我通过将我的应用程序和示例应用程序(Showcase)指向同一个CRUD模块来进行调试和测试。
  • 我可以毫无问题地使用Java代码链接它们。

目前我有两个我无法解决的问题,其中包括:

M:1关系未保存

我对User类的'theatres'关系有疑问。编辑时 通过CRUD类型User的对象,我可以看到多选控件将剧院实例与用户联系起来,当我点击它们中的一些(一个或多个)并保存对象时,关系不会被保存,使得无法通过CRUD界面链接对象。

如何让它发挥作用?

CRUD代码不是由一个应用程序访问,而是由另一个应用程序访问

Objectify模块(Showcase)中的示例应用程序允许我使用CRUD保存M:1关系。正如我之前提到的,我的应用程序和展示都指向同一个CRUD模块,因此它们应该使用完全相同的代码。通过Log输出调试我注意到的是我的应用程序使用CRUD,但示例应用程序使用所有代码到达某一点。

CRUD模块遍历'tag / form.html',找到一个类型为'relation'的字段(在我的代码和示例应用程序中),但是当调用标签'#{crud.relationField}'时,有些奇怪的事情发生了:我的应用程序进入CRUD模块中定义的标记。示例应用程序不访问该代码,不会触发添加到该标记的日志(在文件的任何位置)。

我在示例应用程序中搜索了任何替换标记,但我找不到。你可以猜到,它让他们疯狂,让我开始相信生活在我桌面上的绿色妖精(没有给我金币,该死的!)

任何人都知道为什么会这样?我可以找到示例应用程序正在执行的代码吗?找到它很可能会解决问题#1

非常感谢!

1 个答案:

答案 0 :(得分:0)

好的,发现问题为#1。我有一个名为“getTheatres()”的方法(应该有另一个名字,是一个错误),这打破了CRUD。重命名方法解决问题#1。

我仍然没有发现为什么#2会发生,但我相信我会离开这个“在我的电脑中工作”的问题之一在我们的世界中如此常见......