I am stuck in this for half a day. My question may be scary with the image and JSon but my problem is not that difficult. I think I included all the information need for one to help. I have the following query
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
This query when run throught PgAdmin 4 returns this
But the JSon that I receive is this
I forgot to tell how I noticed the JSon is wrong. I should have a “link” with “studio-venda” and “link” with “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"]}]
Here is my Java code
String q = "select id, preco, 'casas-venda' as link, descricao, dir, slug from casa_venda " +
"union alln" +
"select id, preco, 'apartamentos-vendas' as link, descricao, dir, slug from apartamento_venda "
+ "union alln"
+ "select id, preco, 'loft-vendas' as link, descricao, dir, slug from loft_venda "
+ "union alln"
+ "select id, preco, 'studio-vendas' as link, descricao, dir, slug from studio_venda "
+ "union alln"
+ "select id, preco, 'quitinete-venda' as link, descricao, dir, slug from quitinete_venda";
List<Imovel> imoveis = entityManager.createNativeQuery(q, Imovel.class)
.getResultList();
Bellow is 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;
}
}
Advertisement
Answer
I was very fraightened by the bug I was having, because createNativeQuery was like a light in the end of the tunnel after struggling with the limitations of JpaRepository. After getting rid of nulls on the database column now the results are pretty much what I expect. I don’t know why my union with nulls running directly on the database works and with createNativeQuery it produces strange results. The particular column I was having problem is “descricao”, some table had null some have characters. I hope it can help others!