Oracle HSQLDB无法正确识别JPA注释中的主键+;获取完整性约束冲突

Oracle HSQLDB无法正确识别JPA注释中的主键+;获取完整性约束冲突,oracle,java-8,hsqldb,dbunit,hibernate-5.x,Oracle,Java 8,Hsqldb,Dbunit,Hibernate 5.x,我们使用Oracle作为生产数据库,使用HSQLDB作为内存单元测试数据库和DBUnit。我正在从数据集文件加载一些预定义的数据。这两种环境都使用Hibernate(现在我正在从3.5升级到5.0.3)作为JPA提供程序。以下代码在生产环境中正常工作,但在jUnit下运行时抛出SQL错误:-104,SQLState:23505-完整性约束冲突:唯一约束或索引冲突。当我创建新记录时,id将填充为1,而不是数据集文件中的最大id 请让我知道任何帮助 下面是实体、测试类和数据集文件 实体: @Enti

我们使用Oracle作为生产数据库,使用HSQLDB作为内存单元测试数据库和DBUnit。我正在从数据集文件加载一些预定义的数据。这两种环境都使用Hibernate(现在我正在从3.5升级到5.0.3)作为JPA提供程序。以下代码在生产环境中正常工作,但在jUnit下运行时抛出SQL错误:-104,SQLState:23505-完整性约束冲突:唯一约束或索引冲突。当我创建新记录时,id将填充为1,而不是数据集文件中的最大id

请让我知道任何帮助

下面是实体、测试类和数据集文件

实体:

@Entity
@Table(name = "RS")
public class Schedule {

  @Id
  @Column(name = ID)
  @SequenceGenerator(name = SEQ_GENERATOR_NAME,
                     sequenceName = SEQ_DB_NAME )
  @GeneratedValue(strategy = GenerationType.AUTO,
                  generator =SEQ_GENERATOR_NAME)
  private Long id;

  @Column(name = NAME, unique = true)
  @Size(message = "{2010}")
  @NotBlank(message = "{2000}")
  private String name;
资源测试:

public class ResourceTest extends AbstractTestNGJerseyDBUnitTest {
    private static final Long EXISTING_RATE_SCHEDULE_ID        = 6L;
    private static final Long NON_EXISTING_RATE_SCHEDULE_ID    = 999999L;
    private static final Long RATE_SCHEDULE_ID_WITH_2_PRODUCTS = 8L;

    @Override
    public String getDataSetFileName() {
        return "dataset/ResourceTest_DBUnit.xml"; }

    @Override
    protected Class[] resourcesToRegister() {
        return new Class[]{Resource.class};
    }

    @Test
    public void test_endpointName() {
        final String endpointName = Resource.RESOURCE_IDENTIFIER;
        Assert.assertEquals(endpointName, "/schedules");
    }

    @Test
    public void test_create() {
        final ObjectMapper mapper = new ObjectMapper();
        final ObjectNode rootNode = mapper.createObjectNode();
        rootNode.put(NAME, "test_create");
        rootNode.put(DESCRIPTION, "...");
        rootNode.put(CODE, "111");
        rootNode.put(STATUS_ID, Status.ACTIVE.name());

        final Response response =
                target(Resource.RESOURCE_IDENTIFIER).request()
                        .accept(MediaType.APPLICATION_JSON)
                        .build("POST", Entity.json(rootNode))
                        .invoke();

        Assert.assertEquals(Response.Status.fromStatusCode(response.getStatus()), Response.Status.CREATED);
    }
数据集文件:

<dataset>
    <RS ID="1" NAME="AlreadyTaken" DESCRIPTION="..." CODE="777" STATUS="ACTIVE" CREATED_BY="jpayer" CREATED_DATE="2014-01-01 00:00:00.0" UPDATED_BY="jpayer" UPDATED_DATE="2014-01-01 00:00:00.0"/>
    <RS ID="2" NAME="FOO" DESCRIPTION="desc" CODE="1111" STATUS="ACTIVE" CREATED_BY="jpayer" CREATED_DATE="2014-01-01 00:00:00.0" UPDATED_BY="jpayer" UPDATED_DATE="2014-01-01 00:00:00.0"/>

</dataset>