Here is my 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 = "slug", type = String.class),
@ColumnResult(name = "dir", type = String.class)
}))
public class Imovel {
public Imovel(Integer id, Integer preco, String descricao, String slug, String dir) {
this.id = id;
this.preco = preco;
this.descricao = descricao;
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 = "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://example/images/07/07592902iiiiii8267077.jpg";
// return imagemPrincipal;
}
public void setImagemPrincipal(String imagemPrincipal) {
this.imagemPrincipal = imagemPrincipal;
}
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;
}
}
上面的类有很多没有意义的代码。几个月前我刚刚开始学习 Java/Spring,并且正在对其进行真正的测试。
这是我的 native 查询
@Query(value = "select id, preco, descricao, slug, dir from casa_venda", nativeQuery = true)
List<Imovel> recuperarPaginaImoveisResidenciaisVenda();
这就是结果。它将 id 映射到 preco,我不知道在 Java 处理流程中什么时候它有意义,但这就是我所得到的。
{
"id": 0, (the id is 47 somehow being assigned to "preco", the 0 and null are also "alien things")
"preco": 47,
"descricao": null,
"slug": null,
"dir": null,
"imagemPrincipal": "https://img.example.com.br/images/07/07592902iiiiii8267077.jpg",
"miniaturasImagens": []
},
{
"id": 0,
"preco": 49,
"descricao": null,
"slug": null,
"dir": null,
"imagemPrincipal": "https://example.com.br/images/07/07592902iiiiii8267077.jpg",
"miniaturasImagens": []
},
最佳答案
在 Controller 中这样做
@Autowired
EntityManager entityManager
在操作方法中
public List<CustomObj> GetCustomObjs(){
List<CustomObj> objs = em.createNativeQuery("select id, name from table", CustomObj.class).getResultList();
return objs;
}
我是 Java 新手。我的CustomObj用@Entiy,@Column注释,即使它们没有映射到表,所以我不知道是否有必要。正如我所说,我刚刚开始学习 Java,我很高兴它能起作用。
关于java - 如何在 Java Spring 中将查询映射到 POJO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60352088/