Я использую Ebean и определить такую модель:Как позволить ebean не генерировать значения для ID?
@Entity
@Table(name = "users")
public class User extends Model {
@Id
public String id;
public String email;
public String name;
}
Вы можете увидеть поле id
является String
, и имеет @Id
аннотацию.
Теперь я сохранить его:
User user = new User();
user.id = "abc";
user.email = "[email protected]";
Ebean.save(user);
Но когда я спас его, я обнаружил, ценность это id
является: 1
, не abc
я указал.
Я проверил SQL, нашел таблицу генерации:
create table users (
id varchar(255) not null,
email varchar(255),
name varchar(255),
constraint pk_users primary key (id))
;
create sequence users_seq;
Вы можете видеть, что есть след users_seq
, который использовался при установке пользователя.
Как определить модель или как настроить Ebean, чтобы она ничего не делала с полем @Id? Просто позвольте мне использовать мое указанное значение?
===========
UPDATE
К сожалению, ребята, я нашел, что это странное поведение из-за моей ошибки!
Да, я использую его с playframework 1, и я попытался создать модуль play-ebean для себя. Но что-то не так: Когда я сохраняю модель, я сбросил значение id по ошибке!
Так что присвоенное значение abc
отсутствует, то Ebean попытается использовать seq, чтобы получить новое значение для него.
Спасибо за все, что вам поможет, и, к сожалению, я буду более осторожен, когда задаю вопрос в следующий раз.
@DataNucleus, так как Ebean следует за jpa, я думаю, что это может быть вопрос «JPA» – Freewind
Это должна быть общая проблема, также я использую ее в игре сейчас. – Freewind
Я говорю, что это вопрос «JPA», потому что в JPA могут быть некоторые аннотации, чтобы изменить это поведение, хотя я не знаю, есть ли :) – Freewind