【问题标题】:JPA custom query returning only some valuesJPA 自定义查询仅返回一些值
【发布时间】:2019-12-14 01:49:18
【问题描述】:

我做了一些测试,但无法找到问题所在。

我正在做一些自定义查询,我只需要从我的数据库中返回一些数据,问题是它只返回一些列的值。

My query should return this:

但它只返回这个:

[
    {
        "nome": "ALAN ",
        "empresa": "data",
        "ultimaSaida": null,
        "grupoUsuarios": null,
        "epc": null,
        "areaControleAtual": null
    },
    {
        "nome": "ALEXANDRE ",
        "empresa": "data",
        "ultimaSaida": null,
        "grupoUsuarios": null,
        "epc": null,
        "areaControleAtual": null
    },
    {
        "nome": "BRUNO ",
        "empresa": "data",
        "ultimaSaida": null,
        "grupoUsuarios": null,
        "epc": null,
        "areaControleAtual": null
    }

只有 nomeepc (null is correct)empresa 字段可以。

我认为问题出在我的自定义查询中,但我不知道出了什么问题。

我的自定义查询:

public interface EmployeesRepository extends JpaRepository<Employees, Integer> {

   @Query(value = "SELECT * FROM USRAPP.ACESSO_LISTA WHERE 'FAB' = SUBSTR(area_controle_atual, 1, 3)",  nativeQuery = true)
    List<EmployeesNecessaryData> findEmployeesByFactory();

}

我的界面:

public interface EmployeesNecessaryData {
    String getNome();

    String getUltimaSaida();

    String getEpc();

    String getAreaControleAtual();

    String getGrupoUsuarios();

    String getEmpresa();


}

employees 类:

@Table(name = "ACESSO_LISTA", schema = "USRAPP")
public class Employees {

    @Id
    @GeneratedValue
    @Column(name = "ID_USUARIO")
    private Integer id;
    @Column(name = "NOME")
    private String nome;
    @Column(name = "EMPRESA")
    private String empresa;
    @Column(name = "ULTIMA_SAIDA")
    private String ultimaSaida;
    @Column(name = "AREA_CONTROLE_ATUAL")
    private String areaControleAtual;
    @Column(name = "GRUPO_USUARIOS")
    private String grupoUsuarios;
    @Column(name = "EPC")
    private String epc;

    public Employees(String nome, String areaControleAtual, String empresa, String grupoUsuarios, String ultimaSaida) {
        this.nome = nome;
        this.areaControleAtual = areaControleAtual;
        this.empresa = empresa;
        this.grupoUsuarios = grupoUsuarios;
        this.ultimaSaida = ultimaSaida;
    }

    public Employees(String nome, String empresa) {
        this.nome = nome;
        this.empresa = empresa;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEmpresa() {
        return empresa;
    }

    public void setEmpresa(String empresa) {
        this.empresa = empresa;
    }

    public String getUltimaSaida() {
        return ultimaSaida;
    }

    public void setUltimaSaida(String ultimaSaida) {
        this.ultimaSaida = ultimaSaida;
    }

    public String getAreaControleAtual() {
        return areaControleAtual;
    }

    public void setAreaControleAtual(String areaControleAtual) {
        this.areaControleAtual = areaControleAtual;
    }

    public String getGrupoUsuarios() {
        return grupoUsuarios;
    }

    public void setGrupoUsuarios(String grupoUsuarios) {
        this.grupoUsuarios = grupoUsuarios;
    }

    public String getEpc() {
        return epc;
    }

    public void setEpc(String epc) {
        this.epc = epc;
    }
}

我的端点调用,返回 JSON:

@RequestMapping(value = "start", method = RequestMethod.GET)
    @ResponseBody
    public List<EmployeesNecessaryData> startList(@RequestParam("sector") String sector) {

      return employeesRepository.findEmployeesByFactory();          

}

提前致谢。

【问题讨论】:

  • 您使用的是 SQL 而不是 JPQL,它只会映射与属性名称直接匹配的列。您的属性与数据库中的列的名称不同,因此不会显示。
  • 谢谢,@M.Deinum!我想你说的明白了。所以我需要将查询更改为 JPQL 格式,对吗?
  • 或者适当地包含您想要的字段并为列使用别名(select nome, ULTIMA_SAIDA as ultimaSaida FROM .... 类似的东西。
  • @M.Deinum 非常感谢!我终于明白问题所在了!

标签: java oracle spring-boot jpa


【解决方案1】:
  • 试试这个查询
  • 根据需要更改以下内容
  • 当您发布新问题时,请描述所有内容,因为它会 帮助你
public interface EmployeesRepository extends JpaRepository<Employees, Integer> {

   @Query(
          value = 
             "select c from  c.USRAPP.ACESSO_LISTA where c.'FAB' = SUBSTRING(c.area_controle_atual, 1, 3)")
    List<EmployeesNecessaryData> findEmployeesByFactory();


    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2022-11-20
    • 2018-09-15
    • 2013-06-24
    相关资源
    最近更新 更多