首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityManager createNativeQuery在Java Springboot中返回错误的结果集

EntityManager createNativeQuery在Java Springboot中返回错误的结果集
EN

Stack Overflow用户
提问于 2020-06-03 02:32:27
回答 1查看 143关注 0票数 0

我被困在这里半天了。对于图像和JSon,我的问题可能很可怕,但我的问题并不是那么难。我想我已经包含了需要帮助的所有信息。我有以下查询

代码语言:javascript
复制
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错误的。我应该有一个“链接”与“工作室-文达”和“链接”与"loft-venda“。

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* [{"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代码

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

Bellow是Imovel类

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

    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-04 23:38:22

我对我的bug感到非常疲惫,因为在与JpaRepository的局限性作斗争之后,createNativeQuery就像隧道尽头的一盏灯。在去掉数据库列上的空值之后,现在的结果与我所期望的差不多。我不知道为什么直接在数据库上运行空值的联合会产生奇怪的结果,而使用createNativeQuery则会产生奇怪的结果。我遇到问题的特定列是"descricao",有些表有null,有些表有字符。我希望它能帮助其他人!

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

https://stackoverflow.com/questions/62158979

复制
相关文章

相似问题

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