簡體   English   中英

為什么JpaRepository.findAll()方法從Oracle數據庫中獲取錯誤的數據?

[英]Why is the JpaRepository.findAll() method fetching the wrong data from my Oracle database?

我的Spring Boot應用程序從Oracle數據庫中提取了錯誤的數據,如中所述:它檢索了正確數量的行,但是內容不正確(數據丟失,[適當地]重復了其他行)。

我是Spring Boot和Oracle數據庫的新手。 我閱讀了很多教程並進行了編碼。 現在,我嘗試創建Web服務的第一個原型,該原型從Oracle 12c數據庫中獲取數據,並使其可以通過HTTP端點進行訪問。

我使用SQL Developer檢查要顯示的表的內容,然后在Spring Boot應用程序中顯示不同的內容。 我使用Spring Boot 2.1.4。

我要顯示的表包含有關日常運行cronjobs的信息。

這是控制器

import de.dat.verguetung.entity.DailyJobsEntity;
import de.dat.verguetung.service.DailyJobsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@CrossOrigin(origins = "http://localhost:4200")
@RestController
@RequestMapping("/dailyjobs")
public class DailyJobsController {
    @Autowired
    DailyJobsService dailyJobsService;

    @CrossOrigin(origins = "*")
    @RequestMapping(value = "/all", method = RequestMethod.GET)
    public List<DailyJobsEntity> getAllDailyJobs() {
        return dailyJobsService.getAllDailyJobs();
    }
}

這是我的存儲庫界面

import de.prototype.entity.DailyJobsEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface DailyJobsRepository extends JpaRepository<DailyJobsEntity, Integer> {
}

這是我的模特

import javax.persistence.*;
import java.util.Date;

@Entity
@Table(name = "LOG_DAILY_JOBS")
public class DailyJobsEntity {

    @Id
    @Column(name = "JOB_TITLE", nullable = false, length = 100)
    private String jobTitle;

    @Column(name = "OK", nullable = false, length = 10)
    private Integer ok;

    @Column(name = "JOB_RESULT", nullable = true, length = 1000)
    private String jobResult;

    @Column(name = "EXECUTION_DATE", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date executionDate;


    protected DailyJobsEntity() {}

    public DailyJobsEntity(String jobTitle, Integer ok, String jobResult, Date executionDate) {
        this.jobTitle = jobTitle;
        this.ok = ok;
        this.jobResult = jobResult;
        this.executionDate = executionDate;
    }

    public Date getExecutionDate() {return executionDate;}

    public void setExecutionDate(Date executionDate) {this.executionDate = executionDate;}

    public String getJobResult() {return jobResult;}

    public void setJobResult(String jobResult) {this.jobResult = jobResult;}

    public Integer getOk() {return ok;}

    public void setOk(Integer ok) {this.ok = ok;}

    public String getJobTitle() {return jobTitle;}

    public void setJobTitle(String jobTitle) {this.jobTitle = jobTitle;}
}

這是我的服務

import de.dat.verguetung.dao.DailyJobsRepository;
import de.dat.verguetung.entity.DailyJobsEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DailyJobsService {
    @Autowired
    DailyJobsRepository dailyJobsRepository;

    public List<DailyJobsEntity> getAllDailyJobs(){
        return this.dailyJobsRepository.findAll();
    }
}

這是我的主班

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class VerguetungApplication {

    public static void main(String[] args) {
        SpringApplication.run(VerguetungApplication.class, args);
    }
}

該表有156行。 該應用程序獲取156行。 沒關系。 但是這些行中有95%填充了錯誤的內容。 我有一列名為“ EXECUTION_DATE”。 該列的輸入范圍為2019-04-02至2019-04-16。 該應用程序顯示執行日期為2019-04-02的每一行。

如果需要,我可以提供有關表內容的更多詳細信息。

我希望有人能幫助我並指出我的錯誤。 提前致謝 :)

編輯:這是表中的內容:

58  1   58  02.04.19
58  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   58  02.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  0   ORA-01403: Keine Daten gefunden 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  0   ORA-01403: Keine Daten gefunden 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   146 03.04.19
get_vsu_movement_count  1   85  04.04.19
get_vsu_movement_count  1   76  05.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   23  15.04.19
get_vsu_movement_count  1   96  16.04.19
get_vsu_movement_count  1   96  16.04.19
get_vsu_movement_count  1   96  16.04.19
get_vsu_movement_count  1   96  16.04.19
get_vsu_movement_count  1   96  16.04.19
get_vsu_movement_count  1   96  16.04.19
get_vsu_movement_count  1   96  16.04.19
get_vsu_movement_count  1   96  16.04.19

這就是應用程序顯示的內容

get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
58 | 1 | 58 | 2019-04-02
58 | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02
get_vsu_movement_count | 1 | 58 | 2019-04-02

編輯2用於打印獲取的行的代碼

@CrossOrigin(origins = "http://localhost:4200")
@RestController
@RequestMapping("/dailyjobs")
public class DailyJobsController {
    @Autowired
    DailyJobsService dailyJobsService;

    @CrossOrigin(origins = "*")
    @RequestMapping(value = "/all", method = RequestMethod.GET)
    public List<DailyJobsEntity> getAllDailyJobs() {
        List<DailyJobsEntity> dJobs = dailyJobsService.getAllDailyJobs();

        dJobs.stream().forEach(job -> {
            System.out.println(job.getJobTitle() + " | " + job.getOk() + " | " + job.getJobResult() + " | " + job.getExecutionDate());
        });
        System.out.println(dJobs.size());
        return dJobs;
    }
}

如果我沒記錯的話,您的DailyJobsRepository使用DailyJobsRepository extends JpaRepository<DailyJobsEntity, Integer>來表示主鍵ID的類型為Integer ,而您的實體DailyJobsEntity則將ID定義為String類型:

@Id
@Column(name = "JOB_TITLE", nullable = false, length = 100)
private String jobTitle;`

jobTitle是實體的主鍵嗎? 因為我希望PK的類型為Integer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM