gpt4 book ai didi

java - Hibernate Junit hsqldb - (strategy = GenerationType.AUTO) 不起作用

转载 作者:行者123 更新时间:2023-11-29 20:38:12 26 4
gpt4 key购买 nike

我的 Dao 层与 MySql 配合良好。当我尝试使用内存数据库(HSQLDB)进行相同的单元测试时,我无法保留数据。我的实体定义如下

public class Api {
@Id
@Column(name = "api_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private int apiId;

尝试持久化时,ID 不会自动生成。它作为 null 传递。

18:05:52.071 [main] DEBUG org.hibernate.SQL - insert into api (api_id, description, version) values (null, ?, ?)
18:05:52.076 [main] DEBUG o.h.e.jdbc.spi.SqlExceptionHelper - could not prepare statement [insert into api (api_id, description, name) values (null, ?, ?)]

我的 hibernate 属性是

    Properties properties = new Properties();
properties.setProperty(ApiConstants.HIBERNATE_DIALECT, "org.hibernate.dialect.HSQLDialect");
properties.setProperty(ApiConstants.HIBERNATE_DRIVER_CLASS, "org.hsqldb.jdbcDriver");
properties.setProperty(ApiConstants.HIBERNATE_CONN_URL, "jdbc:hsqldb:mem:apicloud");
properties.setProperty(ApiConstants.HIBERNATE_CONN_USER, "sa");
properties.setProperty(ApiConstants.HIBERNATE_CONN_PWD, "");
properties.setProperty("hibernate.archive.autodetection", "class,hbm");
properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
properties.setProperty("hibernate.show_sql", "true");

每次触发单元测试时都会创建架构。 Create 语句发出如下。

18:05:51.995 [main] DEBUG org.hibernate.SQL - create table api 
(api_id integer generated by default as identity (start with 1),
description varchar(255), version varchar(255), primary key (api_id))

如果我遗漏了什么,请告诉我。

最佳答案

当我将HSQLDB版本更新到2.2.9后,问题得到解决。

https://forum.hibernate.org/viewtopic.php?f=1&t=1043498&p=2490106#p2490106

普拉迪普。

关于java - Hibernate Junit hsqldb - (strategy = GenerationType.AUTO) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38701655/

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