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

postgreql序列和Hibernate的问题

陆寒
2023-03-14

我经常读这个网站,但这是我第一次写,希望我不会犯错误,并为我糟糕的英语道歉。我说到重点了:我必须开发代码来在postgresql数据库的单个表上插入记录,在一个Spring启动项目上使用Hibernate。这个表有一个序列,我想用它来获取id的值。在我的表的hbm.xml文件中,我有这样一个:

table="td_tito">
        <id name="idTito" column="ID_TITO">
            <generator class="sequence">
                <param name="sequence">seq_td_tito</param>
            </generator>
        </id>
        <property ..../>
        <property ..../>

bean类中,我有变量idTito及其getter和setter方法。

当我试图通过调用实现JpaRepository接口的类的保存方法来保存时,我得到以下异常:

12:56:06.746 [main] DEBUG org.hibernate.engine.transaction.internal.TransactionImpl - On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false

12:56:06.747[主]DEBUGorg.hibernate.engine.transaction.internal.TransactionImpl-开始12:56:06.756[主]DEBUGorg.hibernate.SQL-选择nextval('hibernate_sequence')Hibernate:选择nextval('hibernate_sequence')12:56:06.782[主]DEBUGorg.hibernate.engine.jdbc.spi.SqlExceptionHelper-无法提取ResultSet[n/a]org.postgresql.util.PSQLExcture: ERROR:关系hibernate_sequence不存在位置:17在org.postgresql.core.v3。QueryExecutorImpl.receive错误响应(QueryExecutorImpl.java:2510)在org.postgresql.core.v3。QueryExecutorImpl.process结果(QueryExecutorImpl.java:2245)org.postgresql.core.v3。QueryExecutorImpl.execute(QueryExecutorImpl.java:311)在org.postgresql.jdbc.PgStatement.execute内部(PgStatement.java:447)在org.postgresql.jdbc.PgStatement.execute(PgStatement.java:368)在org.postgresql.jdbc.在org. postgresql. jdbc. pgPREaredState. java: 159)在org. hibernate. nine. jdbc.内部。在org. hibernate. id. enhance的ResultSetResnImp.提取(ResultSetResnImp. java: 57)。序列结构1美元。getNextValue(序列结构. java: 95)在org. hibernate. id. enhance的。NoopOptimizer。生成(NoopOptimizer. java: 40)在org. hibernate. id. enhance的。序列样式生成器。生成(序列样式生成器。java: 523)在org. hibernate. evental的。AbstractSaveEventLister。保存生成器(AbstractSaveEventLister. java: 115)在org. hibernate. evental的。DefaultSaveOrUpdateEventLister。保存生成器(DefaultSaveOrUpdateEventLister. java: 194)在org. hibernate. evental的。DefaultSaveOrUpdateEventLister.SessionImp. fire(SessionImp. java: 626)at org. hibernate. interal. SessionInp.保存(SessionInp. java: 619)at org. hibernate. interal. SessionInp.保存(SessionInp. java: 614)at com. xxx. hibernate. TestHIbernate. SaveTdtito(TestHIbernate. java: 122)at com. xxx. hibernate. TestHIbernate. main(TestHIbernate. java: 20)12:56:06.782[main]WARN org. hibernate. gine. jdbc. spi. SqlExceptionHelper-SQL错误: 0, SQLState: 42P01 12:56:06.782[main]ERROR org. hibernate. gine. jdbc. spi. SqlExceptionHelper-ERROR:

这是实体类:@Entity public Class TdTito{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long idTito;
private int lev;
...

public Long getIdTito() {
    return idTito;
}
public void setIdTito(Long idTito) {
    this.idTito = idTito;
}

public int getLev() {
    return lev;
}
public void setLev(int lev) {
    this.lev = lev;
}

}

通过删除注释,我得到这个错误,因为我试图启动应用程序:

2020-06-16 15:26:46.394错误23244---[restartedMain]开机。SpringApplication:应用程序运行失败

有什么建议吗?非常感谢大家

共有1个答案

郝乐心
2023-03-14

如果您正在使用,您必须从实体中删除所有注释

这一行导致搜索hibernate_序列:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)

只需删除这一行。

但是我建议使用注释。这看起来像这样:

@Id 
@SequenceGenerator(name = "seq_td_tito", sequenceName = "seq_td_tito")
@GeneratedValue(generator = "seq_td_tito", strategy = GenerationType.SEQUENCE)
private Long idTito;
 类似资料:
  • 我对Spring Boot是新手,但我对Spring有经验。 我有一个工作启动Spring启动项目。现在我想将它连接到Postgres DB,并能够使用常规查询。具体来说,我们经常在Spring(DAO)中编写以下类型的代码: 问:有人能告诉我在Spring Boot中做同样事情的标准方法是什么吗?要做到这一点,我需要在不同的文件中添加什么(比如所有依赖项和注释等等)。 我知道对你来说,把所有的代

  • 这是域对象: 这是测试课程: 这是冬眠。cfg。xml: 这是sql语句(我使用oracle开发人员) 错误这就是错误: 错误:ORA-00923:无法从关键字中找到必需的 异常线程"main"org.hibernate.exception.SQLGrammarExc0019:无法提取结果集org.hibernate.exception.internal.SQLExceptionTypeDeleg

  • 我在尝试使用Spring数据和Hibernate作为JPA实现和Postgresql来选择更新行时遇到了一个问题。 假设我们有实体:A,B,C。 假设我们希望选择一个包含所有相关B和C实体的A进行更新,即锁定与表相关的行。 查询将如下所示 更新a, c 该查询将尝试锁定导致异常的两个表,例如:org.postgresql.util.PSQLException:ERROR:FOR UPDATE无法应

  • 问题内容: 我正在使用oracle 11g,Java(struts2)和Hibernate开发应用程序。 我有一个名为mytemp的表,其列mytemp_id为NUMBER(22,0)类型。 在我的mytemp.hbm.xml文件中,ID如下所示 在我的Oracle数据库中,创建了名为“ MYTEMP_TEMP_ID_SEQ”的序列,并在Oracle中正常工作。 现在,当我尝试使用hibernat

  • 我特别需要上面的代码来创建一个名为“DateOfBirth”的列,而Hibernate给了我一个名为date\u of\u birth的列。我怎样才能改变这个?有网站吗。xml属性?我遇到了DefaultNamingStrategy和ImprovedNamingStrategy,但不知道如何指定其中一种。

  • 我正在尝试使用选择查询更新一个表中的列。 它运行并更新整个列作为(文本字段)。 我尝试仅更新宗教几何与宗地几何相交的行。