2015-10-28 3 views
0

создать объект (класс Occupant не определяет конструктор) и сохраните его:Почему у моего вновь созданного объекта Ebean неверный идентификатор?

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

После того как я сохранить его, объект не может быть найден с:

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

Однако, я могу найти его в качестве единственного входа в:

Occupant.find.all()

Я уверен, что они одни, но у них ИМЕЮТ РАЗНЫЕ ИДЫ!

Я использую oracle, а класс Occupant использует тот же генератор последовательности, что использует несколько других классов (и они сразу же обнаруживаются идентификатором после сохранения()).

общественного класса Occupant расширяет модель {

@Id
@ Constraints.Max (10)
@GeneratedValue (стратегия = GenerationType.SEQUENCE, генератор = "my_favorite_seq") @ Constraints.Required
private String id;

В качестве примечания, я проверил БД непосредственно и o.getId() составляет примерно -30 от my_favorite_seq.nextval в то время как идентификатор в Occupant.find.all() -1 от my_favorite_seq.nextval.

Ebean должен собирать значения последовательности, а затем путаться, когда их использовать? Спасибо за понимание.

ответ

0

В Oracle иногда люди используют триггер вставки для извлечения NEXTVAL из последовательности и вставить его в качестве идентификатора.

Это было то.

Падающий триггер, жизнь в норме.

Смежные вопросы