Операции сохранения и обновления в одной транзакции JPA не работают должным образом - PullRequest
0 голосов
/ 09 мая 2020

рассматривать сущность как пользователя, у нее есть несколько полей. здесь я использую функции обратного вызова jpa для обновления пользовательской информации о последнем обновлении информации. в тестовом классе я хочу написать метод junit, чтобы оценить, работают ли эти методы обратного вызова или нет / не только для тестирования функциональности и покрытия кода. но если я буду следовать приведенному ниже подходу, я получаю одно и то же время каждый раз, может ли кто-нибудь помочь в этом.

@Entity
public class User {
     // user setter and getter methods

    @preUpdate
    public void preUpdateFunction() {
      this.lastUpdateDate = new Date();
   }

   @prePersist
   public void prePersistFunction() {
      // setting some user properties
      preUpdateFunction();
   }
}

// пожалуйста, игнорируйте эту конфигурацию и настройку аннотаций, я протестировал мою конфигурацию пружины класса, работающую отлично, нет проблем с пружинной конфигурацией.

@SpringConfiguration
@JpaTransactional
public class TestClass {


     @Autowired
     UserDao userDao;  // userDao implements JPA Repository

    // I am worrying about this functionality only
    @Test
    public void saveUpdateTest() {
          User user = userDao.save(new User(constructor arguments));
          user = userDao.findOne(user.getId());

          user.setName("Hello");   // here updating user object with existing property
          User updatedUser = userDao.save(user);


         assertEquals(user.getLastUpdateDate().getTime(), updatedUser.getLastUpdateDate().getTime());   

// assertion is failing, everytime i am getting same Time for two values. even I added //Thread.sleep(1000) between save and update operations, still i am getting same values.

    }

}
...