Как сопоставить запрос с POJO в Java Spring? - PullRequest
0 голосов
/ 22 февраля 2020
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 несколько месяцев go, и я действительно ТЕСТИРУЮ ЭТО.

Вот мой собственный запрос

 @Query(value = "select id, preco, descricao, slug, dir from casa_venda", nativeQuery = true)
   List<Imovel> recuperarPaginaImoveisResidenciaisVenda();

Это результат. Он отображает идентификатор на 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": []
},

1 Ответ

0 голосов
/ 23 февраля 2020

В контроллере просто сделайте это

@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 Я просто счастлив, что это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...