Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java [PersistenceException:获取序列nextval时出错]_Java_Playframework 2.0_Ebean - Fatal编程技术网

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

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

我在尝试将数据保存到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时出现的错误

我将感谢任何帮助的努力!非常感谢

编辑:这里是表格结构

我认为使用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”一件简单的事情,但很容易错过。答案中的代码中提到了这一点。