Java [PersistenceException:获取序列nextval时出错]
我在尝试将数据保存到db中的模型时遇到此错误Java [PersistenceException:获取序列nextval时出错],java,playframework-2.0,ebean,Java,Playframework 2.0,Ebean,我在尝试将数据保存到db中的模型时遇到此错误 @Entity public class User extends Model { @Required public String name; @Email public String email; @Required @MaxLength(value=10) public String username; @Required @MinLength(value=4) public String pa
@Entity
public class User extends Model {
@Required
public String name;
@Email
public String email;
@Required @MaxLength(value=10)
public String username;
@Required @MinLength(value=4)
public String password;
@Id
public int id;
}
这是我的课
这是我试图将模型保存到db时出现的错误
我将感谢任何帮助的努力!非常感谢
编辑:这里是表格结构
我认为使用ebean时,您必须实际命名并注释您的id。您可能还必须告诉它支持序列器的名称(我不记得了)。演示如何执行此操作。这对我来说很有效:
@Entity
@Table(name = "table", schema = "schema")
public class Bean extends Model{
@Id
@Column(name = "idcolumn")
@SequenceGenerator(name="gen", sequenceName="schema.table_idcolumn_seq",allocationSize=1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gen")
private int id;
}
使用SequenceGenerator时,请注意Hibernate中的以下错误:
它强制您将模式直接写入sequenceName,而不是使用SequenceGenerator注释中的schema字段。这在类注释中对我很有效:
@SequenceGenerator(name = "SEQUENCE_NAME", sequenceName = "PST_BUSINESS.S_BUSINESS_DOMAIN")
@Entity
@Table(name = "TB_BUSINESS_DOMAIN", schema = "PST_BUSINESS")
public class PstBusinessDomain extends PstAbstractBaseMappedEntity {
正如Leo所说,此策略适用于字段和类中的注释。请显示您的表结构(创建表的sql文件)。告诉我们你在用什么数据库,因为如果它在MySQL上,它不支持序列。我添加了我的表结构,请看updatedid你用ebean生成表?是的,它自己生成的。但我怀疑我也有我的班级的身份证。我应该删除这个,因为Ebean会自动创建一个ID吗?可能重复:John,非常感谢!这就是重点。巨大的飞越能力!;)这个解决方案也适用于我(Play 2.0.4)。关键是将此注释添加到我的用户模型中:
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator=“users\u id\u seq”)
。我不知道Play是否没有正确地识别序列,但它现在起作用了。令人沮丧。我还必须定义序列,否则Hibernate会告诉我它不知道用户id:@SequenceGenerator(name=“seq\u gen\u name”,sequenceName=“task\u seq”)@GeneratedValue(strategy=GenerationType.sequence,generator=“seq\u gen\u name”)@id公共长id代码>这些例子对我来说很有用,只是我不得不添加我的模式:sequenceName=“myschema.my_seq”一件简单的事情,但很容易错过。答案中的代码中提到了这一点。