簡體   English   中英

EntityManager createNativeQuery 在 Java Springboot 中返回錯誤的結果集

[英]EntityManager createNativeQuery returning wrong result set in Java Springboot

我被困在這半天了。 我的問題可能對圖像和 JSon 來說很可怕,但我的問題並不難。 我想我包括了所有需要幫助的信息。 我有以下查詢

select id, preco, 'casas-venda' as link,   descricao, dir, slug from casa_venda
 union
select id, preco, 'apartamentos-vendas' as link,   descricao, dir, slug from apartamento_venda  
 union

select id, preco, 'loft-vendas' as link,   descricao, dir, slug from loft_venda

 union

select id, preco, 'studio-vendas' as link,   descricao, dir, slug from studio_venda

 union
 select id, preco, 'quitinete-venda' as link, descricao, dir, slug from quitinete_venda

此查詢在 PgAdmin 4 中運行時返回此

在此處輸入圖像描述

但是我收到的JSon是這個

我忘了告訴我如何注意到 JSon 是錯誤的。 我應該有一個與“studio-venda”的“鏈接”和一個與“loft-venda”的“鏈接”。

[{"id":5,"preco":190000,"descricao":"Apartamento bem confortável","link":"apartamentos-vendas","slug":"casa-venda-4-dormitorios-Franca-São Paulo","dir":"29","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-4-dormitorios-franca-sao-paulo_5.jpg","casa-venda-4-dormitorios-franca-sao-paulo_4.jpg","casa-venda-4-dormitorios-franca-sao-paulo_1.jpg","temp.jpg","casa-venda-4-dormitorios-franca-sao-paulo_3.jpg","casa-venda-4-dormitorios-franca-sao-paulo_7.jpg","casa-venda-4-dormitorios-franca-sao-paulo_2.jpg","casa-venda-4-dormitorios-franca-sao-paulo_6.jpg"]},{"id":10,"preco":667000,"descricao":"Apartamento muito bonito","link":"apartamentos-vendas","slug":"casa-venda-1-dormitorios-Franca-São Paulo","dir":"33","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-1-dormitorios-franca-sao-paulo_6.jpg","casa-venda-1-dormitorios-franca-sao-paulo_3.jpg","casa-venda-1-dormitorios-franca-sao-paulo_2.jpg","temp.jpg","casa-venda-1-dormitorios-franca-sao-paulo_5.jpg","casa-venda-1-dormitorios-franca-sao-paulo_1.jpg","casa-venda-1-dormitorios-franca-sao-paulo_4.jpg","casa-venda-1-dormitorios-franca-sao-paulo_7.jpg"]},{"id":4,"preco":190000,"descricao":"Apartamento bem confortável","link":"apartamentos-vendas","slug":"casa-venda-4-dormitorios-Franca-São Paulo","dir":"28","imagemPrincipal":"https://img.olx.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-4-dormitorios-franca-sao-paulo_5.jpg","casa-venda-4-dormitorios-franca-sao-paulo_4.jpg","casa-venda-4-dormitorios-franca-sao-paulo_1.jpg","temp.jpg","casa-venda-4-dormitorios-franca-sao-paulo_3.jpg","casa-venda-4-dormitorios-franca-sao-paulo_7.jpg","casa-venda-4-dormitorios-franca-sao-paulo_2.jpg","casa-venda-4-dormitorios-franca-sao-paulo_6.jpg"]},{"id":6,"preco":91000,"descricao":"Apartamento muito bonito","link":"apartamentos-vendas","slug":"casa-venda-1-dormitorios-Franca-São Paulo","dir":"30","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-1-dormitorios-franca-sao-paulo_6.jpg","casa-venda-1-dormitorios-franca-sao-paulo_3.jpg","casa-venda-1-dormitorios-franca-sao-paulo_2.jpg","temp.jpg","casa-venda-1-dormitorios-franca-sao-paulo_5.jpg","casa-venda-1-dormitorios-franca-sao-paulo_1.jpg","casa-venda-1-dormitorios-franca-sao-paulo_4.jpg","casa-venda-1-dormitorios-franca-sao-paulo_7.jpg"]},{"id":2,"preco":90000,"descricao":"Apartamento muito bom","link":"apartamentos-vendas","slug":"casa-venda-4-dormitorios-Franca-São Paulo","dir":"26","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-4-dormitorios-franca-sao-paulo_5.jpg","casa-venda-4-dormitorios-franca-sao-paulo_4.jpg","casa-venda-4-dormitorios-franca-sao-paulo_1.jpg","temp.jpg","casa-venda-4-dormitorios-franca-sao-paulo_3.jpg","casa-venda-4-dormitorios-franca-sao-paulo_7.jpg","casa-venda-4-dormitorios-franca-sao-paulo_2.jpg","casa-venda-4-dormitorios-franca-sao-paulo_6.jpg"]},{"id":3,"preco":90000,"descricao":"Apartamento muito bom","link":"apartamentos-vendas","slug":"casa-venda-4-dormitorios-Franca-São Paulo","dir":"27","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-4-dormitorios-franca-sao-paulo_5.jpg","casa-venda-4-dormitorios-franca-sao-paulo_4.jpg","casa-venda-4-dormitorios-franca-sao-paulo_1.jpg","temp.jpg","casa-venda-4-dormitorios-franca-sao-paulo_3.jpg","casa-venda-4-dormitorios-franca-sao-paulo_7.jpg","casa-venda-4-dormitorios-franca-sao-paulo_2.jpg","casa-venda-4-dormitorios-franca-sao-paulo_6.jpg"]},{"id":2,"preco":90000,"descricao":"Apartamento muito bom","link":"apartamentos-vendas","slug":"casa-venda-4-dormitorios-Franca-São Paulo","dir":"26","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-4-dormitorios-franca-sao-paulo_5.jpg","casa-venda-4-dormitorios-franca-sao-paulo_4.jpg","casa-venda-4-dormitorios-franca-sao-paulo_1.jpg","temp.jpg","casa-venda-4-dormitorios-franca-sao-paulo_3.jpg","casa-venda-4-dormitorios-franca-sao-paulo_7.jpg","casa-venda-4-dormitorios-franca-sao-paulo_2.jpg","casa-venda-4-dormitorios-franca-sao-paulo_6.jpg"]},{"id":9,"preco":667000,"descricao":"Apartamento muito bonito","link":"apartamentos-vendas","slug":"casa-venda-1-dormitorios-Franca-São Paulo","dir":"34","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-1-dormitorios-franca-sao-paulo_6.jpg","casa-venda-1-dormitorios-franca-sao-paulo_3.jpg","casa-venda-1-dormitorios-franca-sao-paulo_2.jpg","temp.jpg","casa-venda-1-dormitorios-franca-sao-paulo_5.jpg","casa-venda-1-dormitorios-franca-sao-paulo_1.jpg","casa-venda-1-dormitorios-franca-sao-paulo_4.jpg","casa-venda-1-dormitorios-franca-sao-paulo_7.jpg"]},{"id":1,"preco":1350,"descricao":"Apartamento super","link":"apartamentos-vendas","slug":"casa-venda-2-dormitorios-Franca-São Paulo","dir":"25","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-2-dormitorios-franca-sao-paulo_2.jpg","casa-venda-2-dormitorios-franca-sao-paulo_3.jpg","casa-venda-2-dormitorios-franca-sao-paulo_5.jpg","casa-venda-2-dormitorios-franca-sao-paulo_7.jpg","casa-venda-2-dormitorios-franca-sao-paulo_4.jpg","temp.jpg","casa-venda-2-dormitorios-franca-sao-paulo_1.jpg","casa-venda-2-dormitorios-franca-sao-paulo_6.jpg"]},{"id":1,"preco":1350,"descricao":"Apartamento super","link":"apartamentos-vendas","slug":"casa-venda-2-dormitorios-Franca-São Paulo","dir":"25","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-2-dormitorios-franca-sao-paulo_2.jpg","casa-venda-2-dormitorios-franca-sao-paulo_3.jpg","casa-venda-2-dormitorios-franca-sao-paulo_5.jpg","casa-venda-2-dormitorios-franca-sao-paulo_7.jpg","casa-venda-2-dormitorios-franca-sao-paulo_4.jpg","temp.jpg","casa-venda-2-dormitorios-franca-sao-paulo_1.jpg","casa-venda-2-dormitorios-franca-sao-paulo_6.jpg"]},{"id":7,"preco":91000,"descricao":"Apartamento muito bonito","link":"apartamentos-vendas","slug":"casa-venda-1-dormitorios-Franca-São Paulo","dir":"31","imagemPrincipal":"https://img.exemplo.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-1-dormitorios-franca-sao-paulo_6.jpg","casa-venda-1-dormitorios-franca-sao-paulo_3.jpg","casa-venda-1-dormitorios-franca-sao-paulo_2.jpg","temp.jpg","casa-venda-1-dormitorios-franca-sao-paulo_5.jpg","casa-venda-1-dormitorios-franca-sao-paulo_1.jpg","casa-venda-1-dormitorios-franca-sao-paulo_4.jpg","casa-venda-1-dormitorios-franca-sao-paulo_7.jpg"]},{"id":8,"preco":91000,"descricao":"Apartamento muito bonito","link":"apartamentos-vendas","slug":"casa-venda-1-dormitorios-Franca-São Paulo","dir":"32","imagemPrincipal":"https://img.olx.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-1-dormitorios-franca-sao-paulo_6.jpg","casa-venda-1-dormitorios-franca-sao-paulo_3.jpg","casa-venda-1-dormitorios-franca-sao-paulo_2.jpg","temp.jpg","casa-venda-1-dormitorios-franca-sao-paulo_5.jpg","casa-venda-1-dormitorios-franca-sao-paulo_1.jpg","casa-venda-1-dormitorios-franca-sao-paulo_4.jpg","casa-venda-1-dormitorios-franca-sao-paulo_7.jpg"]},{"id":1,"preco":1350,"descricao":"Apartamento super","link":"apartamentos-vendas","slug":"casa-venda-2-dormitorios-Franca-São Paulo","dir":"25","imagemPrincipal":"https://img.olx.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-2-dormitorios-franca-sao-paulo_2.jpg","casa-venda-2-dormitorios-franca-sao-paulo_3.jpg","casa-venda-2-dormitorios-franca-sao-paulo_5.jpg","casa-venda-2-dormitorios-franca-sao-paulo_7.jpg","casa-venda-2-dormitorios-franca-sao-paulo_4.jpg","temp.jpg","casa-venda-2-dormitorios-franca-sao-paulo_1.jpg","casa-venda-2-dormitorios-franca-sao-paulo_6.jpg"]},{"id":1,"preco":1350,"descricao":"Apartamento super","link":"apartamentos-vendas","slug":"casa-venda-2-dormitorios-Franca-São Paulo","dir":"25","imagemPrincipal":"https://example.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-2-dormitorios-franca-sao-paulo_2.jpg","casa-venda-2-dormitorios-franca-sao-paulo_3.jpg","casa-venda-2-dormitorios-franca-sao-paulo_5.jpg","casa-venda-2-dormitorios-franca-sao-paulo_7.jpg","casa-venda-2-dormitorios-franca-sao-paulo_4.jpg","temp.jpg","casa-venda-2-dormitorios-franca-sao-paulo_1.jpg","casa-venda-2-dormitorios-franca-sao-paulo_6.jpg"]},{"id":1,"preco":1350,"descricao":"Apartamento super","link":"apartamentos-vendas","slug":"casa-venda-2-dormitorios-Franca-São Paulo","dir":"25","imagemPrincipal":"https://example.com.br/images/07/07592902iiiiii8267077.jpg","miniaturasImagens":["casa-venda-2-dormitorios-franca-sao-paulo_2.jpg","casa-venda-2-dormitorios-franca-sao-paulo_3.jpg","casa-venda-2-dormitorios-franca-sao-paulo_5.jpg","casa-venda-2-dormitorios-franca-sao-paulo_7.jpg","casa-venda-2-dormitorios-franca-sao-paulo_4.jpg","temp.jpg","casa-venda-2-dormitorios-franca-sao-paulo_1.jpg","casa-venda-2-dormitorios-franca-sao-paulo_6.jpg"]}]

這是我的 Java 代碼

String q = "select id, preco, 'casas-venda' as link,   descricao, dir, slug from casa_venda " +
"union all\n" +
"select id, preco, 'apartamentos-vendas' as link,   descricao, dir, slug from apartamento_venda  "
                       + "union all\n"

+ "select id, preco, 'loft-vendas' as link,   descricao, dir, slug from loft_venda  "

                       + "union all\n"

       + "select id, preco, 'studio-vendas' as link,   descricao, dir, slug from studio_venda  "

                       + "union all\n"

                       + "select id, preco, 'quitinete-venda' as link, descricao, dir, slug from quitinete_venda";

               List<Imovel> imoveis = entityManager.createNativeQuery(q, Imovel.class)

                       .getResultList();

波紋管是Imovel class

@Entity
@SqlResultSetMapping(
        name = "imovelMapping",
        classes = @ConstructorResult(
                targetClass = Imovel.class,
                columns = {
                    @ColumnResult(name = "id", type = Integer.class),
                    @ColumnResult(name = "preco", type = Integer.class),

                    @ColumnResult(name = "descricao", type = String.class),
                    @ColumnResult(name = "link", type = String.class),
                    @ColumnResult(name = "slug", type = String.class),
                    @ColumnResult(name = "dir", type = String.class)

                }))
public class Imovel {

    public Imovel() {

    }

    public Imovel(Integer id, Integer preco, String descricao, String link, String slug, String dir) {
        this.id = id;
        this.preco = preco;
        this.descricao = descricao;
         this.link = link;
        this.slug = slug;
        this.dir = dir;

        System.out.println(this.getPreco());
        System.out.println("/var/www/back_imoveis/back_imoveis/imoveis/src/main/resources/fotos/" + this.dir + "/miniaturas");

        File folder = new File("/var/www/back_imoveis/back_imoveis/imoveis/src/main/resources/fotos/" + this.dir + "/miniaturas");
        File[] listOfFiles = folder.listFiles();

        for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                miniaturasImagens.add(listOfFiles[i].getName());
            }
        }

        this.miniaturasImagens = miniaturasImagens;

    }

    public Imovel(Integer preco) {
        this.preco = preco;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "id")
    private long id;

    @Column(name = "preco")
    private Integer preco;

    @Column(name = "descricao")
    private String descricao;

    @Column(name = "link")
    private String link;

    @Column(name = "slug")
    private String slug;

    @Column(name = "dir")
    private String dir;

    @Transient
    private String imagemPrincipal;

    @Transient
    private List<String> miniaturasImagens = new ArrayList<String>();

    public Integer getPreco() {
        return preco;
    }

    public void setPreco(Integer preco) {
        this.preco = preco;
    }

    public long getId() {
        return id;
    }

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

    public String getImagemPrincipal() {

        return "https://img.olx.com.br/images/07/07592902iiiiii8267077.jpg";
        // return imagemPrincipal;
    }

    public void setImagemPrincipal(String imagemPrincipal) {
        this.imagemPrincipal = imagemPrincipal;
    }

    public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public String getSlug() {
        return slug;
    }

    public void setSlug(String slug) {
        this.slug = slug;
    }

    public String getDir() {
        return dir;
    }

    public void setDir(String dir) {
        this.dir = dir;
    }

    public List<String> getMiniaturasImagens() {

        return miniaturasImagens;
    }

    public void setMiniaturasImagens(List<String> imagens) {

        this.miniaturasImagens = imagens;

    }

}

我對我遇到的錯誤感到非常害怕,因為在與 JpaRepository 的限制作斗爭之后,createNativeQuery 就像隧道盡頭的一盞燈。 現在擺脫數據庫列上的空值后,結果幾乎符合我的預期。 我不知道為什么我的聯合與直接在數據庫上運行的空值一起工作,而使用 createNativeQuery 它會產生奇怪的結果。 我遇到問題的特定列是“descricao”,有些表有 null 有些有字符。 我希望它可以幫助別人!

暫無
暫無

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

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