首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate Junit hsqldb -(策略= GenerationType.AUTO)不工作

Hibernate Junit hsqldb -(策略= GenerationType.AUTO)不工作
EN

Stack Overflow用户
提问于 2016-08-01 22:39:32
回答 1查看 344关注 0票数 0

我的Dao层与MySql一起工作得很好。当我尝试用内存中的数据库(HSQLDB)进行同样的单元测试时,我无法持久化数据。我的实体定义如下

代码语言:javascript
复制
public class Api {
    @Id
    @Column(name = "api_id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int apiId;

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

代码语言:javascript
复制
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属性是

代码语言:javascript
复制
    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语句的发出如下所示。

代码语言:javascript
复制
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))

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

EN

回答 1

Stack Overflow用户

发布于 2016-08-02 13:04:01

当我将HSQLDB版本更新到2.2.9时,这个问题得到了解决。

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

普拉迪普。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38701655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档