java - 如何在 Java Spring 中将查询映射到 POJO?

标签 java jpa

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/

相关文章:

java - Android 操作系统更新时是否有广播/Intent ?

java - 在继承状态层次结构中找不到声明的类 : UserAccount

java - JPA - 无效的 persistence.xml

java - 无法打开 JPA EntityManager 进行交易;嵌套异常是 javax.persistence.PersistenceException

java - 填充并打印个人 LinkedList 复制品的元素

Java继承,扩展类如何影响实际类

java - 通过RestAPI删除Neo4j的所有节点和关系

java - JPA 在持久化对象时丢失字段

java - JPA 将具有 PK 的实体映射到具有复合 PK 的实体

java - 如何在 Android Studio 中配置 MediaRecorder 以 48KHz 录制 WAV 格式的音频?