当前位置: 首页 > 面试题库 >

正确的Hibernate ID生成器用于postgres串行/大串行列?

羊舌庆
2023-03-14
问题内容

我的PostgreSQL表具有id的类型bigserial,这意味着它们是在插入行时生成的(因此,该INSERT语句中未提供id列的值)。我<generator class="...">在XML映射文件中找不到属性的正确值时遇到困难。

下面的代码是我发现的最接近于Postgres的代码,但是SELECT nextval(...)在插入之前(仍在插入中显式包括id字段的值),它仍然在序列上执行。我只希望Hibernate根本不包含id字段值,从而允许Postgres自己生成值本身。

    <id name="id" column="id" type="java.lang.Long">
        <generator class="sequence">
            <param name="sequence">my_sequence_name</param>
        </generator>
    </id>

问题答案:

这没有记录,但是identity当PK的类型为SERIAL或时,实际上您可以在PostgreSQL中使用生成器BIGSERIAL

<id name="id" column="user_id" type="java.lang.Long">
     <generator class="identity"/>
</id>

有关此背景,请参见 HB-875
和HHH-1675。



 类似资料:
  • 但我还是有例外 由:java.sql.sqlException引起:com.mysql.jdbc.sql第1行的列“rins”的字符串值不正确:“\xf0\x9f\x92\xbc”

  • 问题内容: 我想将这个大字符串分成几行,每行中的内容不应超过MAX_LINE_LENGTH个字符。 到目前为止我尝试过的 输出: 它造成 断字 。我不要这个 而不是我想要这样的输出: 添加了另一个条件: 如果单词长度大于MAX_LINE_LENGTH,则该单词应拆分。 解决方案应该没有外部罐子的帮助。 问题答案: 只需逐个单词地遍历字符串,并在单词超过限制时中断。 我只是以徒手的方式输入了该内容,

  • 如果我在editor.swagger.io中粘贴以下规范: 描述以单行呈现: 即使 yaml 规范声明块样式字符串保留换行符:https://yaml-multiline.info/ 如何在swagger编辑器中使用多行字符串?

  • 介绍 在JDK提供的StringBuilder中,拼接字符串变得更加高效和灵活,但是生成新的字符串需要重新构建StringBuilder对象,造成性能损耗和内存浪费,因此Hutool提供了可复用的StrBuilder。 使用 StrBuilder和StringBuilder使用方法基本一致,只是多了reset方法可以重新构建一个新的字符串而不必开辟新内存。 StrBuilder builder =

  • 问题内容: PostgreSQL 9.5的upsert的正确语法,下面的查询显示错误,为什么? 我尝试更改为 然后显示错误,但是 我不想将gallery_id或category_id设置为唯一, 因为我想确保两列都相同然后进行更新.... 如何正确地在postgres 9.5中进行upsert? 如果需要唯一列,我应该使用其他方法,怎么办? 我想确保多列都冲突然后进行更新,正确的用法是什么 表(c

  • 我一整天都在尝试从JPA/Hibernate的Postgres获取序列,但它给了我所有的时间: 信息:Hibernate:调用tb_cdr_id_seq的下一个值警告:SQL错误: 0,SQLState: 42601错误:错误:语法错误在或附近“调用”严重:javax.persistence.持久性异常:org.hibernate.exception.SQLGrammar异常:无法提取结果集 Po