![](/img/trans.png)
[英]entityManager.createNativeQuery does not return a typed result
[英]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.