@Query продолжает извлекать нуль из базы данных - PullRequest
0 голосов
/ 30 мая 2020

В настоящее время у меня есть то, что я хотел бы назвать блоком кода (блок Writer, но с кодированием). Я много раз пытался проверить и убедиться, что все находится в нужном месте, но он продолжает возвращать мне ноль, несмотря на то, что данные, которые я запрашиваю в @Query, существуют.

Это @Query, который я в настоящее время есть,

@Query(value = "select d.denda from data_transaksi_model d WHERE d.tanggal=:x AND d.nama_wp = :y AND d.masa_pajak=:z", nativeQuery = true)
    String findAllDenda(String x,String y,String z);

Мой ожидаемый результат - это набор «denda» из таблицы «data_transaksi_model», в котором указаны c «tanggal», «name» и «masa_pajak» из этой таблицы. Я дважды проверил таблицу, созданную в базе данных, и она имеет то же имя, что и то, что я там спрашиваю,

enter image description here

As you can see, the table name is matchup and the name of the column name that has the name of what I want in my query is also match up. Just to make sure, I also check the structure of the database and it is indeed a string, also the same with others.

enter image description here

The table is the byproduct of the model from my Spring Boot's project that I have made.


@Entity
public class DataTransaksiModel {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @NotNull
    @Column(name = "tanggal")
    private String tanggal;

    @NotNull
    @Column(name = "no_kohir")
    private String noKohir;

    @NotNull
    @Column(name = "no_urut")
    private String noUrut;

    @NotNull
    @Column(name = "nama_wp")
    private String namaWP;

    @NotNull
    @Column(name = "jam")
    private String jam;

    @NotNull
    @Column(name = "nop")
    private String nop;

    @NotNull
    @Column(name = "denda")
    private String denda;

    @NotNull
    @Column(name = "jumlah_setoran")
    private String jumlahSetoran;

    @NotNull
    @Column(name = "luas_tanah")
    private String luasTanah;

    @NotNull
    @Column(name = "luas_bangunan")
    private String luasBangunan;

    @NotNull
    @Column(name = "kecamatan")
    private String kecamatan;

    @NotNull
    @Column(name = "kelurahan")
    private String kelurahan;

    @NotNull
    @Column(name = "masa_pajak")
    private String masaPajak;

    @NotNull
    @Column(name = "lokasi")
    private String lokasi;

    @NotNull
    @Column(name = "pokok")
    private String pokok;

    @NotNull
    @Column(name = "cabang")
    private String cabang;

    @NotNull
    @Column(name = "User")
    private String user;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getTanggal() {
        return tanggal;
    }

    public void setTanggal(String tanggal) {
        this.tanggal = tanggal;
    }

    public String getNoKohir() {
        return noKohir;
    }

    public void setNoKohir(String noKohir) {
        this.noKohir = noKohir;
    }

    public String getNoUrut() {
        return noUrut;
    }

    public void setNoUrut(String noUrut) {
        this.noUrut = noUrut;
    }

    public String getNamaWP() {
        return namaWP;
    }

    public void setNamaWP(String namaWP) {
        this.namaWP = namaWP;
    }

    public String getJam() {
        return jam;
    }

    public void setJam(String jam) {
        this.jam = jam;
    }

    public String getNop() {
        return nop;
    }

    public void setNop(String nop) {
        this.nop = nop;
    }

    public String getDenda() {
        return denda;
    }

    public void setDenda(String denda) {
        this.denda = denda;
    }

    public String getJumlahSetoran() {
        return jumlahSetoran;
    }

    public void setJumlahSetoran(String jumlahSetoran) {
        this.jumlahSetoran = jumlahSetoran;
    }

    public String getLuasTanah() {
        return luasTanah;
    }

    public void setLuasTanah(String luasTanah) {
        this.luasTanah = luasTanah;
    }

    public String getLuasBangunan() {
        return luasBangunan;
    }

    public void setLuasBangunan(String luasBangunan) {
        this.luasBangunan = luasBangunan;
    }

    public String getKecamatan() {
        return kecamatan;
    }

    public void setKecamatan(String kecamatan) {
        this.kecamatan = kecamatan;
    }

    public String getKelurahan() {
        return kelurahan;
    }

    public void setKelurahan(String kelurahan) {
        this.kelurahan = kelurahan;
    }

    public String getMasaPajak() {
        return masaPajak;
    }

    public void setMasaPajak(String masaPajak) {
        this.masaPajak = masaPajak;
    }

    public String getLokasi() {
        return lokasi;
    }

    public void setLokasi(String lokasi) {
        this.lokasi = lokasi;
    }

    public String getPokok() {
        return pokok;
    }

    public void setPokok(String pokok) {
        this.pokok = pokok;
    }

    public String getCabang() {
        return cabang;
    }

    public void setCabang(String cabang) {
        this.cabang = cabang;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }
}

With that finished, I insert a data dummy into the database as the following.

enter image description here

Therefore, I tried to put the input of tanggal with "1170130", nama_wp with "SURATNO" and masa_pajak with "2016". However, I keep getting null instead of "9.166" in the collection. Where did I do wrong? I am using XAMPP, MySQL, and Spring Boot for this project.

/EDIT: I tried it manually in my XAMPP with SELECT denda FROM data_transaksi_modelWHERE nama_wp="SURATNO" AND masa_pajak="2014" AND tanggal="1170130" and it actually gives me a return

enter image description here

However, when I do it in my spring boot project it still return null.

//Edit2: I am using IntelliJ as my IDE and there is a warning (not an error) within the @Query annotation. It is said that "No data sources are configured to run this SQL and provide advanced code assistance. Disable this inspection via problem menu (alt+enter)" there is also a warning that said, "SQL dialect is not configured". If that is the source of the problem, how to fix it?

введите описание изображения здесь

/// edit3: Я пытался исправить вокруг запроса, но он не показывает желаемый результат. Это служба, которую я использую для репозитория

    @Autowired
    DataTransaksiDb dataTransaksiDb;

    @Override
    public List<String> getDenda(String tanggal, String nama, String masaPajak){
        // TODO Auto-generated method stub
        return dataTransaksiDb.findAllDenda(tanggal, nama, masaPajak);
    }

, и это контроллер, на котором я использую службу. Контроллер использует составной файл, в котором данные берутся из загруженного CSV, где в CSV есть таблица, такая же, как и в базе данных.

 @PostMapping("/uploadFile")
    public static void uploadFile(@RequestParam("file") MultipartFile file, HttpServletResponse response) throws IOException {
        if (file.getContentType().equalsIgnoreCase("application/vnd.ms-excel")) {
            InputStreamReader input = new InputStreamReader(file.getInputStream());
            CSVParser csvParser = CSVFormat.EXCEL.withFirstRecordAsHeader().parse(input);
            for (CSVRecord record : csvParser) {
                String nama = record.get("nama_wp");
                String masa = record.get("masa_pajak");
                String tanggal = record.get("tanggal");
                String denda = record.get("denda");
                String jumlahSetoran = record.get("jumlah_setoran");
                String pokok = record.get("pokok");
                String luasTanah = record.get("luas_tanah");
                String luasBangunan = record.get("luas_bangunan");

                try {
                    System.err.println(tanggal + "\n" + nama + "\n" + masa);
                    List<String> results = rekonsiliasiService.getDenda(tanggal, nama, masa);
                    System.err.println("results " + results);
                } catch (NullPointerException e) {
                    System.err.println(e);
                }


            }


            response.sendRedirect("/rekonsiliasi");
        } else {
            response.sendRedirect("/rekonsiliasi");
        }
    }

Независимо от результата ввода, который Я понимаю, что он продолжает ловить исключение nullpointerexception

//// EDIT4: Я попытался отладить его, и с моего контроллера я попытался сделать System.err.println(rekonsiliasiService.getDenda(tanggal,nama,masa));, и это заставляет меня получать Исключение нулевого указателя. Затем я попытался проверить, не является ли проблема вводом самого параметра в сервисе

@Override
    public List<String> getDenda(String tanggal, String nama, String masaPajak){
        // TODO Auto-generated method stub
        System.err.println("tanggal " + tanggal + "\n" + "nama " + nama + "\n" + "masaPajak " + masaPajak);
        return dataTransaksiDb.findAllDenda(tanggal, nama, masaPajak);
    }

Он никогда не достигал System.err.println("tanggal " + tanggal + "\n" + "nama " + nama + "\n" + "masaPajak " + masaPajak); на моем уровне сервиса.

1 Ответ

0 голосов
/ 30 мая 2020

попробуйте следующее:

@Query(value = "select d.denda from DataTransaksiModel d WHERE d.tanggal=:x AND d.namaWP = :y AND d.masaPajak=:z")
    List<String> findAllDenda(@Param("x")String x, @Param("y")String y,@Param("z") String z);

если это не сработало, попробуйте следующее:

@Query(value = "select d.denda from data_transaksi_model d WHERE d.tanggal=:x AND d.nama_wp = :y AND d.masa_pajak=:z", nativeQuery = true)
    List<String> findAllDenda(@Param("x")String x, @Param("y")String y,@Param("z") String z);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...