Я хотел немного протестировать JPA и поэтому создал следующий класс User
:
@Entity
@Table(name="USER")
public class User {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user")
private int user_id;
@Column(name="firstname")
private String firstname;
@Column(name="lastname")
private String lastname;
protected User() {
}
public User(String firstname, String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
//getters and setters
}
Теперь у меня есть следующий тестовый класс:
@RunWith(SpringRunner.class)
@DataJpaTest
public class AssignmentTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private UserRepository userRepository;
@Test
public void whenFindByName_thenReturnUser() {
//given
User user = new User("Firstname", "Lastname");
entityManager.persist(user);
entityManager.flush();
//when
User found = userRepository.findUsersByLastname(user.getLastname()).get(0);
entityManager.detach(user);
user.setLastname("Boohoo");
//then
assertThat(found.getLastname())
.isEqualTo("Lastname");
}
}
СейчасЯ хотел бы, чтобы entityManager прекратил изменять значение моего Entity.Я прочитал несколько постов, в которых говорилось использовать detach
, remove
или clear
- ничего из этого не получилось.Я все еще получаю (при тестовом прогоне):
org.junit.ComparisonFailure: expected:<"[Lastname]"> but was:<"[Boohoo]">
Я пытался разобраться в инструкциях, которые выполняет Hibernate, но я не вижу, чтобы hibernate выполнил update
-условие.
Что я сделал не так на этом?