为什么我新创建的Ebean对象有错误的ID?

时间:2015-10-28 20:46:52

标签: java orm playframework ebean

我创建了一个对象(类Occupant没有定义构造函数)并保存它:

Occupant o = new Occupant();
o.setAProperty("value");
o.save();

保存后,找不到对象:

  

Occupant.find.byId(o.getId())

但是,我可以将其作为唯一的条目:

  

Occupant.find.all()

我确信他们是同一个但他们有不同的ID!

我正在使用oracle,并且Occupant类使用与其他几个类正在使用的相同的序列生成器(并且在save()之后可以通过id立即找到。)

  

公共类占用者扩展了模型{

     

@Id
    @ Constraints.Max(10)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator =" my_favorite_seq")     @ Constraints.Required
    private String id;

作为旁注,我直接检查了数据库,o.getId()与my_favorite_seq.nextval约为-30,而Occupant.find.all()中的id是my_favorite_seq.nextval的-1。

Ebean必须汇集序列值,然后对何时使用它们感到困惑?感谢您的任何见解。

2 个答案:

答案 0 :(得分:1)

您可以先打开一些记录ala http://ebean-orm.github.io/docs/logging

答案 1 :(得分:0)

在Oracle中,有时人们会使用insert上的触发器从序列中获取nextval并将其作为ID插入。

就是这样。

掉线,生命恢复正常。