Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧不工作时自动增量Hsqldb_Java_Spring_Integration Testing_Hsqldb - Fatal编程技术网

Java 弹簧不工作时自动增量Hsqldb

Java 弹簧不工作时自动增量Hsqldb,java,spring,integration-testing,hsqldb,Java,Spring,Integration Testing,Hsqldb,我正在尝试使用嵌入式数据库运行集成测试。我尝试使用hsqldb数据库来实现这一点,利用脚本的使用,当我尝试在没有id的情况下输入我的id时,尽管我将id设置为autoincrement,但我遇到了一个异常,我没有包括我的id 我使用HSQLDB管理器尝试了相同的脚本,一切都很好,所以我不知道为什么会发生这种情况。花了相当长的时间试图找到一个解决方案,但我想可能有人经历过这种情况 这里有一个java类 package com.whot.dao; import com.whot.domain.Ho

我正在尝试使用嵌入式数据库运行集成测试。我尝试使用hsqldb数据库来实现这一点,利用脚本的使用,当我尝试在没有id的情况下输入我的id时,尽管我将id设置为autoincrement,但我遇到了一个异常,我没有包括我的id

我使用HSQLDB管理器尝试了相同的脚本,一切都很好,所以我不知道为什么会发生这种情况。花了相当长的时间试图找到一个解决方案,但我想可能有人经历过这种情况

这里有一个java类

package com.whot.dao;

import com.whot.domain.Hotspot;
import com.whot.repository.HotspotRespository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlGroup;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import static org.hibernate.validator.internal.util.Contracts.assertNotNull;
import static org.junit.Assert.assertEquals;

@RunWith(SpringJUnit4ClassRunner.class)
@DataJpaTest
@ActiveProfiles("test")
@SqlGroup({
        @Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts ={"classpath:create_tables.sql"}),
        @Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, scripts = {"classpath:rollback/rollback_tables.sql"})
})



public class HotspotRepositoryTest {

    @Autowired
    private HotspotRespository hotpsotRepo;

    @Autowired
    private TestEntityManager em;


    @Test
    public void TestSaveHotspot(){

       //test code goes here
    }
}
这是我的剧本

CREATE TABLE IF NOT EXISTS address (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1, INCREMENT BY 1),
    street_name VARCHAR(256),
    unit INT,
    street_number INT,
    CONSTRAINT address_pk PRIMARY KEY (ID)
);

INSERT INTO address(id, street_name, unit, street_number) VALUES (1, 'Ossiomo Street', -1, 2);

INSERT INTO address(street_name, unit, street_number) VALUES ('first street', 10, 780);
这是堆栈跟踪

Caused by: org.hsqldb.HsqlException: integrity constraint violation: NOT NULL check constraint; SYS_CT_10094 table: ADDRESS column: ID
    at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]
    at org.hsqldb.Table.enforceRowConstraints(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]
    at org.hsqldb.Table.generateAndCheckData(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]
    at org.hsqldb.Table.insertSingleRow(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]
    at org.hsqldb.StatementDML.insertSingleRow(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]
    at org.hsqldb.StatementInsert.getResult(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]
    at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]
    at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]
    at org.hsqldb.Session.executeDirectStatement(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]
    at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.3.4.jar:2.3.4]

@GeneratedValue(strategy=GenerationType.IDENTITY)
放在实体类中@Id注释属性的上方。

因为
Id
列是自动递增的,为什么要在第一个
INSERT
语句中传递一个值?我这样做是为了向大家展示一个例子@Berger,当我这样做时,它是有效的,但当我像在第二个场景中那样取出它时,它就不起作用了