更新如何与 Ebean 和 Play 框架一起使用

Posted

技术标签:

【中文标题】更新如何与 Ebean 和 Play 框架一起使用【英文标题】:How does updating work with Ebean and Play framework 【发布时间】:2014-03-06 03:08:12 【问题描述】:

我是一般框架、Ebean 和 ORM 的新手,我有一个关于更新持久对象字段的问题。

我知道在hibernate中当你调用一个对象的set方法时,它会自动调用update方法在db中更新。 Ebean 的工作方式是否类似?使用 play 框架,根据我的阅读,当字段公开时,getter 和 setter 会自动生成。假设我的游戏项目中有以下课程:

@Entity
public class Foo extends Model
   public String bar;

public static void main(String a[])
  Foo f =  new Foo();
  f.bar = "foobar";

我的问题分为两部分:

1) 完成任务 f.bar="foobar";重新编译成调用 f.setBar("foobar");游戏中?

2) 如果是这样,这个赋值会自动调用模型的 upadte 方法还是我需要显式地创建更新方法来更新每个字段?

感谢您的帮助:)

【问题讨论】:

【参考方案1】:

    是的,play 会自动创建 setter 和 getter,除非您定义了自定义 setter 或 getter。

    为了持久化你的数据,你必须调用model.save()或者model.update(),assignments不会自动更新数据库。

顺便说一句,我建议您始终为@ID 字段编写setter 和getter,因为有时它会导致非常奇怪的错误。

【讨论】:

您好,Omer,感谢您的回复。因此,作为一个后续问题,如果我希望能够更新字段,那么最好手动定义我的 setter 方法并在其中调用 update ?另外,如果我的@ID 字段是自动入罪的,那么就不需要设置器来正确了吗? 是的,您可以编写自己的 setter 和 getter 进行自动更新,但我真的不明白您为什么要这样做?只需在您更改任何内容后调用 model.save() ,否则您可能会查询超出需要的数据库。而对于@ID 字段,不管是不是自动递增,只要定义setter 和getter,正如我所说的,它会导致一些奇怪的错误。

以上是关于更新如何与 Ebean 和 Play 框架一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Lob 使用 play 框架和 Ebean 和 H2 返回 null

我不能在游戏框架中使用 ebean

如何通过 java 为 Play!2.1.1 配置 ebean 服务器

如何将 SORM 框架与 Play 框架一起使用?

玩!框架+Ebean

如何让 Squeryl 与 Play 一起工作!框架?