[PersistenceException:获取序列nextval时出错]

时间:2012-06-29 11:13:17

标签: 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 password;
   @Id 
   public int id;
}

这是我的班级。

这是我尝试将模型保存到db时的错误。

enter image description here

我将非常感谢您的帮助!非常感谢。

编辑:表结构在这里 enter image description here

3 个答案:

答案 0 :(得分:10)

我认为使用ebean,你必须在身体上注明并注释你的身份。您可能还必须告诉它后备音序器的名称(我不记得了)。 This显示了如何操作。

答案 1 :(得分:2)

这对我有用:

@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中的这个错误:https://hibernate.atlassian.net/browse/HHH-7232

它强制您将模式直接写入sequenceName,而不是使用SequenceGenerator注释中的模式字段。

答案 2 :(得分:1)

这对我的课堂注释很有用:

@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所说,这种策略适用于现场和课堂上的注释。