Java-刷新数据库

时间:2018-07-11 15:11:50

标签: java spring hibernate spring-data-jpa

我正在使用带有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>{

}

This is the object that I want to get from the Database

1 个答案:

答案 0 :(得分:0)

解决方案是:

如果您使用的是Oracle数据库,则在对数据库表执行任何更新之后,必须使用COMMIT;语句来保存所做的更改。

使用提交后,对象正确返回。