【发布时间】:2012-04-17 11:09:11
【问题描述】:
我正在使用Ebean,并定义了这样一个模型:
@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 = "a@a.com";
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;
可以看到有一个seq users_seq,在插入用户的时候已经使用了。
如何定义模型或者如何配置 Ebean 让它不对@Id 字段做任何事情?就让它使用我指定的值?
============
更新
对不起,伙计们,我发现这种奇怪的行为是因为我的错误!
是的,我将它与 playframework 1 一起使用,并且我尝试为自己创建一个 play-ebean 模块。但是有一点不对:保存模型时,我错误清除了id值!
所以分配的值abc 丢失了,那么Ebean 将尝试使用seq 来为其获取新值。
感谢大家的帮助,再次抱歉,我下次提问时会更加小心。
【问题讨论】:
-
@DataNucleus,既然Ebean跟着jpa,我觉得可以是“JPA”问题
-
应该是一般问题,我现在也在玩。
-
我说这是一个“JPA”问题,因为JPA中可能有一些注释可以改变这种行为,虽然我不知道是否有:)
标签: jpa ebean playframework-1.x