首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么JpaRepository.findAll()方法从我的Oracle数据库中获取错误的数据?

为什么JpaRepository.findAll()方法从我的Oracle数据库中获取错误的数据?
EN

Stack Overflow用户
提问于 2019-04-26 07:49:44
回答 1查看 800关注 0票数 0

我的Spring应用程序从Oracle数据库获取错误的数据,因为它检索正确的行数,但内容不正确(数据丢失,其他行可能重复)。

我是Spring和Oracle数据库的新手。我阅读了大量的教程并编写了相应的代码。现在,我尝试创建webservice的第一个原型,该服务从Oracle 12c数据库获取数据,并通过HTTP访问数据。

我使用SQL检查我想要显示的表的内容,它在我的Spring应用程序中显示了不同的内容。我使用SpringBoot2.1.4。

我要显示的表包含有关每天运行的cron作业的信息。

这是控制器

代码语言:javascript
运行
复制
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();
    }
}

这是我的存储库接口

代码语言:javascript
运行
复制
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> {
}

这是我的型号

代码语言:javascript
运行
复制
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;}
}

这是我的服务

代码语言:javascript
运行
复制
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();
    }
}

这是我的主类

代码语言:javascript
运行
复制
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。

如果需要,我可以提供更多关于表内容的详细信息。

我希望有人能帮助我指出我的错误。(预先谢谢:)

编辑:--这是表中的内容:

代码语言:javascript
运行
复制
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

这就是应用程序显示的内容

代码语言:javascript
运行
复制
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打印取出行的代码

代码语言:javascript
运行
复制
@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;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-26 08:00:44

如果我没有弄错,您的DailyJobsRepository使用DailyJobsRepository extends JpaRepository<DailyJobsEntity, Integer>来指示主键ID为Integer类型,而实体DailyJobsEntity定义ID为String类型:

代码语言:javascript
运行
复制
@Id
@Column(name = "JOB_TITLE", nullable = false, length = 100)
private String jobTitle;`

jobTitle是实体的主键吗?因为我希望PK是类型的整数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55863087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档