gpt4 book ai didi

java - hibernate 找不到序列

转载 作者:行者123 更新时间:2023-12-01 12:28:05 25 4
gpt4 key购买 nike

我需要一个简单的序列,它可以为我提供递增的整数,稍后我将其用作字符串的一部分。

我使用 postgresql 命令行创建了这个序列:

CREATE SEQUENCE my_seq
INCREMENT BY 1

该序列存在,因为我可以从 postgresql 命令行查询它,但我正在尝试使用 hibernate 获取值:

Query query = session.createSQLQuery("select nextval(:sequence);");
query.setParameter("sequence", "my_seq");
Long nextVal=((BigInteger)query.uniqueResult()).longValue();

我遇到了这个异常:

ERROR: relation "my_seq" does not exist

序列值不代表任何实体的属性。我只需要它们来存储登录次数,但我不会将登录信息存储为实体。

编辑:我通过将方案名称添加到查询中来使其工作:

String query1 = "select nextval(myscheme.my_seq)";
Query query = session.createSQLQuery(query1);

我不明白为什么它需要该方案,因为 myscheme 已经是默认的,并且所有其他查询在不指定方案的情况下都可以正常工作。如果有人能提供一些线索,我会接受它的答案。

最佳答案

您不需要将序列映射到实体。只需对实体的 ID 列保留如下映射,tntity 的 id 将从序列 my_seq 生成。您不需要调用 nextval(my_seq) 或其他任何东西。

@Entity("myEntity")
public class MyEntity {

@Id
@Column(name = "id", unique = true, nullable = false, insertable=false)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_seq")
@SequenceGenerator(name = "my_seq", sequenceName = "my_seq", allocationSize = 1)
private long id;
}

关于java - hibernate 找不到序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26179976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com