В настоящее время у меня есть то, что я хотел бы назвать блоком кода (блок 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» из этой таблицы. Я дважды проверил таблицу, созданную в базе данных, и она имеет то же имя, что и то, что я там спрашиваю,
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.
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.
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
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);
на моем уровне сервиса.