【问题标题】:[PersistenceException: Error getting sequence nextval][PersistenceException: Error getting sequence nextval]
【发布时间】:2012-06-29 11:13:17
【问题描述】:

我在尝试将数据保存到 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;
}

这是我的班级。

这是我尝试将模型保存到数据库时出现的错误。

我将不胜感激任何帮助!非常感谢。

编辑:表结构在这里

【问题讨论】:

  • 请显示您的表结构(创建表的sql文件)。并告诉我们您正在使用什么数据库,因为如果它在 MySQL 上,它不支持序列。
  • 我添加了我的表结构,请看更新
  • 您是否使用 ebean 生成表格?
  • 是的,它自己生成的。但我怀疑我也有我班级的身份证。我应该删除它,因为 Ebean 会自动创建一个 ID?

标签: java playframework-2.0 ebean


【解决方案1】:

我认为使用 ebean 您必须实际命名和注释您的 id。您可能还必须告诉它支持音序器的名称(我不记得了)。 This 展示了如何做到这一点。

【讨论】:

  • 约翰,非常感谢!这就是重点。伟大的Stackoverflower! ;)
  • 这个解决方案也适用于我(Play 2.0.4)。关键是将此注释添加到我的用户模型中:@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "users_id_seq")。我不知道 Play 是否没有正确识别序列或什么,但它现在可以工作了。令人沮丧。
  • 我还必须定义序列,否则 Hibernate 会告诉我它不知道 users_id_seq:@SequenceGenerator(name="seq_gen_name", sequenceName="task_seq") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_gen_name") @Id public Long id;
  • 这些例子对我有用,除了我必须添加我的模式: sequenceName="myschema.my_seq" 一个简单的事情,但很容易错过。它在下面答案的代码中提到。
【解决方案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 注释中的架构字段。

【讨论】:

    【解决方案3】:

    这在类注释上对我有用:

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

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 1970-01-01
      • 2022-12-02
      • 2016-11-14
      • 2015-11-08
      • 2020-09-26
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多