Birim testlerimde bazı varlıkları sürdürmek ve veritabanından almalarını test etmek istiyorum. Kaydedilmiyorlardı ve test metodu @Transaction
ile de açıklandığı zaman, bunun bir hata olmadan bitmesine rağmen, içinde olan hiçbir şeyin kalıcı olmadığına karar verdim. Bir çoğu çoğa tembel yüklü dernek ile karıştırmasını ve @Transaction
sorunu gidermek gibiydi ile yöntemini açıklarken @Transaction açıklamalı yöntem, verileri bir veritabanına kaydetmiyor
LazyInitializationException
karşılaşmıştı.
Varlıkların neden kurtarılmamasının nedeni ne olabilir? İşlemin başarısız olmadığından geri alınmasının bir nedeni yoktur. İlgili sınıfların
Kodu:
@Test
@Transactional
public void plainPersistence() throws NullParameterException {
User user = userHelper.createUser("User1", "password", null, null);
Assert.assertNotNull(userDAO.findByUsername("User1"));
}
userhelper:
@Service
public class UserHelper {
@Autowired
private UserDAO userDAO;
public User createUser(...) throws NullParameterException {
User newUser = new User(username, ...);
userDAO.save(newUser);
return newUser;
}
UserDAO en save()
yöntem sonradan çağırır save()
UserRepository
tarih: Eğer olasıdır yana
@Repository
public interface UserRepository extends CrudRepository<User, Long> {
public User findByUsername(String username);
}
teşekkür ile sınıf açıklama Bahar < 4,2
kullanıyorsanız, bu değiştirmek için, ile test sınıfları açıklama olmalıdır. Şimdi bir istisna alıyorum olsa da 'org.springframework.transaction.TransactionSystemException: JPA işlemi yapılamadı; iç içe istisna javax.persistence.RollbackException: rollbackOnly' olarak işaretlenmiş İşlem, ama bu ben –
yeps varsayalım bir ilerleme, bu mantık kendisi üzerinde devam eden gerçek bir istisna nedeniyle. Bu anlamaya gerek –