Java HIbernate不为PostgreSQL使用序列

Java HIbernate不为PostgreSQL使用序列,java,postgresql,hibernate,sequence,Java,Postgresql,Hibernate,Sequence,我遇到了一些问题:我需要在PostgreSQL中使用序列来生成ID。但当我在表中保存新对象时,它会说id为null org.postgresql.util.PSQLException: ERROR: null value in column "id" violates not-null constraint 我使用这些注释: @SequenceGenerator(name = "fooGen", sequenceName = "FOO_SEQ", allocationSize =

我遇到了一些问题:我需要在PostgreSQL中使用序列来生成ID。但当我在表中保存新对象时,它会说id为null

org.postgresql.util.PSQLException: ERROR: null value in column "id" violates not-null constraint
我使用这些注释:

    @SequenceGenerator(name = "fooGen", sequenceName = "FOO_SEQ",   allocationSize = 1)
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "fooGen")
    @Column(columnDefinition = "numeric")
    private BigInteger id;
这对甲骨文来说是有效的。我看了很多问题,但大多数都使用GenerationType.AUTO或GenerationType.IDENTITY,解决方案是使用GenerationType.SEQUENCE。但我已经在用了

我在尝试使用repository方法保存实体时遇到此异常

fooRepository.saveAndFlush(entity);
我的数据库是PostgreSQL 9.6.1。 我用

序列存在,我检查过了。并且hibernate.hbm2ddl.auto=validate会给我异常,如果它不存在的话

求求你,帮帮我,我哪里出错了

我正在使用数据库架构:

<prop key="hibernate.default_schema">${jdbc.postgresql.schema}</prop>
${jdbc.postgresql.schema}
也许,这会引起一些问题


提前感谢

尝试将id的类型更改为
Long
like

   @SequenceGenerator(name = "fooGen", sequenceName = "FOO_SEQ",   allocationSize = 1)
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "fooGen")
    @Column(columnDefinition = "numeric")
    private Long id;

此表具有多对多关系,连接两个实体的表具有自己的id字段。Hibernate没有为此表映射Java类,也没有设置此id。解决方案是删除此字段。

这听起来可能很愚蠢,但您的数据库中是否有此seq
FOO_seq
?是的,我的应用程序使用了数据库模式中的序列。如果您仍处于可以在数据库中调整的阶段,我建议您使用
serial
字段,让postgres处理其余部分。可以肯定的是,所有注释都是从“javax.persistence”包导入的,对吗?是的,但我编写了一些简单的代码来创建实体。它毫无例外地发挥了作用。所以,其他地方一定有错误,谢谢你的帮助)
   @SequenceGenerator(name = "fooGen", sequenceName = "FOO_SEQ",   allocationSize = 1)
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "fooGen")
    @Column(columnDefinition = "numeric")
    private Long id;