У меня есть простые операции CRUD с Spring Boot и Oracle 11g. Мой класс Entity выглядит так:
public class Entity{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int entity_id;
...
@CreationTimestamp
@Column(name = "creation_date", columnDefinition="ON UPDATE CURRENT_TIMESTAMP")
@Temporal(TemporalType.TIMESTAMP)
private Date creation_date;
...//setters and getters
}
Мой JUnit выглядит так
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
public class EntityTests {
Logger log = Logger.getAnonymousLogger();
@Autowired
private EntityRepository entityRepository;
@Test
public void addEntity(){
Entity entity= new Entity();
entity.setFirst_name("Jhon");
entity.setLast_name("David");
Entity savedEntity = entityRepository.save(entity);
log.info(savedEntity.toString());
Assert.assertEquals(entity, savedEntity);
//log.info(savedEntity.getCreation_date().toString());
}
Последний log.info генерирует исключение NullPointerException при запуске с аннотацией @Transactional, но в противном случае работает нормально, и БД заполняется ожидаемыми значениями.
Так ведет себя @Transactional или Hibernate не вставляет никакого значения для дат в транзакционные JUnits?
Temporal
не работает. Вы должны зафиксировать транзакцию. Попробуйте методflush
из репозитория. - person ByeBye   schedule 22.06.2017