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