Java jpa-是否在保存到存储库进行测试之前/之后覆盖自动生成的Id?

Java jpa-是否在保存到存储库进行测试之前/之后覆盖自动生成的Id?,java,jpa,Java,Jpa,所以,我有一些@Entity类可以自动生成一个Id @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private int id; 但是,问题是在测试期间,我想保存特定的ID。我可以创建一个对象并给它任何我想要的id,但不幸的是,只要我调用任何保存操作 save() saveAll() saveAndFlush() 对于存储库,将生成一个新的&不同的id,并取代我分配的id,

所以,我有一些@Entity类可以自动生成一个Id

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
但是,问题是在测试期间,我想保存特定的ID。我可以创建一个对象并给它任何我想要的id,但不幸的是,只要我调用任何保存操作

save()
saveAll()
saveAndFlush()
对于存储库,将生成一个新的&不同的id,并取代我分配的id,这将破坏我所有的测试


有什么建议作为解决办法吗?我无权更改实际的实体或存储库类。是否有一种方法可以覆盖存储库保存实现,但仅针对某些测试repo?

我不知道是否可以这样做。 是否要使用IT测试测试数据库连接/保存? 如果没有,您可以模拟存储库以避免使用不需要的id进行保存。 然后你把你的主张写给。。。断言你所期望的


为什么要避免在测试期间自动生成id?

我的测试是集成测试&使用h2作为内存dbms,但我认为您是对的,使用这种类型的测试是不可能的。我可能会采纳你的建议,避免这种类型的测试,而是选择模拟repo将返回的内容。对于IT测试,我是一个初学者,当我不希望测试数据保留在db中时,在测试后,我启动delete(),或deleteById(),诸如此类。当然,您必须先检索数据,然后才能使用FindByChoosen属性(theProperty)了解id;这可能不是一个非常专业或干净的解决方案,但它对我有效。