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

如何在hibernate中生成序列

空英逸
2023-03-14

我使用以下命令创建了一个名为hibernate_sequence的序列

create sequence hibernate_sequence start with 400;

这是我的hibernate注释dao

@Entity
@Table(name="T_BIZ_TERM")
public class BizTerm implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -3056055722354292136L;

    private Long bizTermId;
@Id
    @GeneratedValue()
    @Column(name="BIZ_TERM_ID")
    public Long getBizTermId() {
        return bizTermId;
    }
    public void setBizTermId(Long bizTermId) {
        this.bizTermId = bizTermId;
    }
}

为了向表中插入新记录,hibernate正在生成错误的查询以获取下一个序列值。。Hibernate总是发出此查询。。不管我做什么。。

select nextval(hibernate_sequnce)

我使用的是oracle 10G,它总是报告以下错误。。

ORA-00923: FROM keyword not found where expected

发出的查询应该是select hibernate\u sequence。来自dual的nextval 现在该怎么办,我遗漏了什么吗?


共有2个答案

陈松
2023-03-14

你配置甲骨文方言了吗?

<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
鲁熙云
2023-03-14

我对Oracle序列执行类似的操作。

@Id
@Column(name = "BIZ_TERM_ID")
@SequenceGenerator(name = "myKeySeq", sequenceName = "hibernate_sequence ", allocationSize = 20)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "myKeySeq")
private Long bizTermId;;

我认为这个序列的名字比hibernate_sequence的好。尝试biz_term_sequence。每个表主键需要不同的序列。

 类似资料:
  • 正如我们所知,下面的hibernate注释每次从1开始的序列生成一个新的数字。考虑一种情况,其中我有一组ID为(1-5)的记录。现在,将从id为3的表中删除一条记录。如果我们看到序列1-5中的数字3由于操作而丢失。当我将在表中添加新记录时,我要求序列重新生成并重新分配数字3。如何做到这一点?

  • 问题内容: 我正在使用:Eclipse Java EE IDE Web开发人员版本:靛蓝发行 使用hibernate工具,我是第一次在Eclipse中hibernate,因此我学习了如何配置hibernate并生成带有注释的POJO(我认为它比.xml更好)。 因此,在生成我的POJO和DAO之后,我尝试进行插入,但是对我的实体管理器启动了“空点异常”,这就是hibernate工具生成dao类的方

  • 问题内容: 我想生成一个日期列表,希望能与另一个表连接,但是我不知道要使用什么语法,类似于以下内容: 我想要日期,因此不必在客户端进一步处理数据。我正在使用它来显示类似于此的表: 问题答案: 日期清单 使用generate_series函数获取可以添加到日期的数字列表,以获取日期列表: 结果: 旋转 问题的后半部分涉及透视结果集- 将行数据转换为列数据。PIVOT和UNPIVOT是ANSI,但我目

  • 问题内容: 我正在尝试在MySQL中生成序列表,以便可以从获得唯一ID 。 问题是我需要动态地多个序列。 首先,我创建了一个表: 然后尝试使用http://dev.mysql.com/doc/refman/5.0/en/information- functions.html#function_last-insert- id中的 示例获取编号 一段时间后,我意识到我还需要安全地为新标签生成行。因此,

  • 我在尝试将HiberNate与SAP HANA In-Memory数据库连接时遇到了一些性能问题,该数据库不支持AUTO_INCREMENT(http://scn.sap.com/thread/3238906)。 因此,我将HiberNate设置为使用序列生成ID。 但是当我插入大量记录(例如,40000)时,Hibernate首先会生成ID。它看起来像: 只有在生成所有 ID 后,它才会开始实际

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