0
我有以下測試:加入表中沒有被填充在@Transactional測試
@Test
public void createNewShopAndCheckUserShopsCollection()
{
//given
ShopEntity shop = new ShopEntity();
String shopName = "test shop";
MallEntity mall = new MallEntity();
mall.setId(1L);
UserEntity user = userService.findOne(1L);
int shopsModeratedBefore = user.getModeratedShops().size();
shop.setMall(mall);
shop.setName(shopName);
shop.setModerators(Collections.singletonList(user));
ShopEntity savedShop = shopRepository.save(shop);
user = userService.findOne(1L);
assertThat(user.getModeratedShops()).hasSize(shopsModeratedBefore + 1);
}
與@Transactional註解類
。執行後我需要回滾,所以其他測試不會失敗。但是,看起來,連接表沒有在方法結束之前填充(斷言正在下降)。我如何手動確保它得到更新?
這裏是映射UserEntity.java
@ManyToMany(mappedBy = "moderators")
@JsonBackReference(value = "moderatedShops")
@Setter
@Getter
private List<ShopEntity> moderatedShops;
在這裏,在ShopEntity.java
@ManyToMany
@JoinTable(name = "shop_moderators",
joinColumns = @JoinColumn(name = "shop_id"),
inverseJoinColumns = @JoinColumn(name = "user_id"))
@JsonManagedReference(value = "moderatedShops")
@Setter
@Getter
private List<UserEntity> moderators;
拜託,同時顯示你的實體類,另一件事是我不知道這種測試是否有必要。你基本上是測試你是否可以在db中插入一些東西 - 你不測試任何邏輯。不知道你是否也使用了spring-boot,但是如果你仍然想用db來測試存儲數據,可以看一下https://spring.io/blog/2016/04/15/testing-improvements-in-spring- boot-1-4#testing-the-jpa-slice – pezetem
@pezetem我添加了實體。我知道它在實際應用中並沒有多大意義,但是我只是學習使用多對多的關係,在與之相關的jpa存儲庫中添加了一些方法,並且我想確保工作正常。 – KrwawyKefir