当前位置: 首页 > 知识库问答 >
问题:

在postgres和Hibernate中使用主键序列时出错

仰翔
2023-03-14

我使用JPA/Hibernate和postgres作为我的数据库

我在postgres中创建了这样一个序列:

CREATE SEQUENCE player_sequence
INCREMENT 20
START 1;

我希望Hibernate使用上面的序列作为主键。

实体的id部分为:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "player_seq")
@SequenceGenerator(name = "player_seq", sequenceName = "player_sequence", allocationSize = 20)
private Integer id;

当我创建一个新播放器并试图通过EntityManger保存它时。persist方法我得到以下错误:

Hibernate:从更新组织的播放器序列中选择下一个值作为id值。冬眠增强型。表结构$1$1执行错误:无法读取高值组织。postgresql。util。异常“下一列”不存在

我不明白我做错了什么

编辑:

以下是持久性的内容。xml:

共有1个答案

郎思远
2023-03-14

尝试更正您的持久性。xml以这种方式:

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
             http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
             version="2.2">

    <persistence-unit name="my-persistence-unit">
        <description>...</description>
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>


        <properties>
            <!--  It was wrong !!!  -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL10Dialect" />

            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/basketball" />
            <property name="javax.persistence.jdbc.user" value="postgres" />
            <property name="javax.persistence.jdbc.password" value="1234" />
            
            <property name="hibernate.show_sql" value="true" />

        </properties>

    </persistence-unit>

</persistence>
 类似资料:
  • 问题内容: 我正在使用Hibernate和MySQL的项目中。我打算使用序列来为数据库中的所有表生成ID。(很难描述我的问题,因此我将向您举例说明)。 例如:我有2个表A和B。首先,我在表A中插入10条记录, 它们的ID为1到10 。然后,我在表B中插入10条记录,我希望 它们的ID为11-20 ,而不是1-10。这意味着生成的ID值将由数据库中所有表(而不是单个表)中的所有记录计算。 那么如何在

  • 在本方案中: Hibernate按预期创建了两个表: Envers还创建两个表: 创建表(bigint(20)不为空,int(11)不为空,tinyint(4)默认为空,主键(,),键(),约束 而且 创建表(int(11)不为NULL,bigint(20)不为NULL,varchar(255)不为NULL,tinyint(4)默认为NULL,主键(,,),约束 问题出在第二个审核表(testen

  • 我有一个带有多个主键的表,所以我必须创建可嵌入类。该键中的一列是另一个表的外键。如何为其创建JPA注释? 所以我只有3列,我试图创建4个注释。列是主键的一部分,也是不同表中的外键。我必须创建多通注释,但我收到: 外键引用POJO。来自POJO的ControlPlanSetup。ControlPlanLine的列数错误。应该是4

  • 要用jooq创建一张唱片,我说 这将引发一个id为null的约束冲突异常。如果我设置一个id(如 我没有得到异常,但postgres不会自动生成值。 http://www.postgresql.org/docs/current/static/datatype-numeric.html#datatype-serial的postgres文档指出“在INSERT中省略SERIAL列,或者指定DEFAUL

  • 我有一些实体: 当我试图保存新的cbonus记录时,出现异常: org.postgresql.util.PSQLException: ERROR: null值在列"bank_id"的关系"cBonus"违反了非空约束详细信息:失败的行包含(773, gp3, null, null, f)。 和查询 DEBUG 24817-[nio-8080-exec-4]org . hibernate . SQL

  • 我正在使用R和包连接到PostgreSQL数据库。db有许多模式,我想知道哪些表与特定的模式相关联。 到目前为止,我已经尝试: 这些都不起作用。 这个相关的问题也存在:使用R在postgres中设置模式名称,这将通过在连接处定义模式来解决这个问题。然而,它还没有得到回答!