我正在使用带有Java的Spring Boot MVC。
我有这个端点:
@GetMapping("/validate/{idIntRaptMec}")
public ResponseEntity<?> validate(@PathVariable(value="idIntRaptMec") Long idIntRaptMec ){
//Get the appointment from the table
IntRaptMec appointment = intRaptMecService.getPointment(idIntRaptMec);
(...)
}
当我使用'getPointment(idIntRaptMec)'时,它将通过JPA从数据库中恢复一个对象。一切正常,直到这里。
但是,似乎该方法恢复的对象已过期。
它的某些属性为NULL,但是该对象在数据库中的记录已填充,包括Java认为为null的属性。
我认为我必须使用某种类型的“ RefreshDatabase”方法。我不知道它是否真的存在,但是我发现Java Spring Boot使用的是“缓存数据库”。这是真的?有办法解决这个问题吗?
我不能在这里放置IntRaptMec模型类,因为它太大了(大约40多个属性)。我没有在此表中创建它。但是我可以向您展示一些返回NULL但已填充到数据库中的属性:
@Column(name="CD_EQUIPTO")
public Long getCdEquipto() {
return this.cdEquipto;
}
public void setCdEquipto(Long cdEquipto) {
this.cdEquipto = cdEquipto;
}
@Column(name="CD_OPERACAO")
public BigDecimal getCdOperacao() {
return this.cdOperacao;
}
public void setCdOperacao(BigDecimal cdOperacao) {
this.cdOperacao = cdOperacao;
}
@Column(name="CD_UPNIVEL3")
public String getCdUpnivel3() {
return this.cdUpnivel3;
}
public void setCdUpnivel3(String cdUpnivel3) {
this.cdUpnivel3 = cdUpnivel3;
}
我不从事交易。与数据库的连接是正确的,因为我可以毫无问题地获得其他对象(从其他模型)。我正在使用Oracle数据库。
这是intRaptMecService类:
@Service
public class IntRaptMecService {
@Autowired
IntRaptMecRepository intRaptMecRepository;
public IntRaptMec getPointment(Long id) {
Optional<IntRaptMec> obj = intRaptMecRepository.findById(id);
return obj.get();
}
}
这是IntRaptMecRepository类:
@Repository
public interface IntRaptMecRepository extends JpaRepository<IntRaptMec, Long>{
}
答案 0 :(得分:0)
解决方案是:
如果您使用的是Oracle数据库,则在对数据库表执行任何更新之后,必须使用COMMIT;
语句来保存所做的更改。
使用提交后,对象正确返回。