mysql - @Query 不断从数据库中提取空值
问题描述
我目前有我想称之为代码块(编写器块但带有编码)的东西。我尝试过多次检查并确保一切都在正确的位置,但是尽管我在@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);
我的预期输出是“data_transaksi_model”表中的“denda”集合,其中包含该表中的特定“tanggal”、“name”和“masa_pajak”。我已经仔细检查了在数据库中创建的表,它与我在那里查询的名称相同,
正如你所看到的,表名是匹配的,并且在我的查询中具有我想要的名称的列名的名称也是匹配的。为了确定,我还检查了数据库的结构,它确实是一个字符串,其他的也一样。
该表是我制作的 Spring Boot 项目中模型的副产品。
@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;
}
}
完成后,我将一个数据虚拟对象插入到数据库中,如下所示。
因此,我尝试tanggal
使用“1170130”、nama_wp
“SURATNO”和masa_pajak
“2016”输入。但是,我在集合中不断得到 null 而不是“9.166”。我哪里做错了?我正在为这个项目使用 XAMPP、MySQL 和 Spring Boot。
/编辑:我在我的 XAMPP 中使用SELECT denda FROM
data_transaksi_model手动尝试了它WHERE nama_wp="SURATNO" AND masa_pajak="2014" AND tanggal="1170130"
,它实际上给了我一个回报
但是,当我在我的 Spring Boot 项目中执行此操作时,它仍然返回 null。
//Edit2:我使用 IntelliJ 作为我的 IDE,@Query 注释中有一个警告(不是错误)。据说“没有配置数据源来运行此 SQL 并提供高级代码帮助。通过问题菜单 (alt+enter) 禁用此检查”还有一个警告说,“未配置 SQL 方言”。如果这是问题的根源,如何解决?
///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));
,它让我得到一个 NullPointerException。然后我尝试查看问题是否是服务中参数本身的输入
@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);
我的服务层内。
解决方案
尝试这个 :
@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);
推荐阅读
- php - 从 WooCommerce 中的订单页面、电子邮件通知和购物车 + 结帐页面中删除小计行
- docker - kubernetes 无法从 spark master 主机中提取图像
- python - 名称 datetime.datetime.strptime() 中的“p”是什么意思?
- html5-canvas - 分组形状上的硬币旋转效果动画
- python - 无法使用 Scrapy 从父节点和子节点/标签获取文本
- python - 按特定顺序连接点
- kotlin - 如何使用 runBlocking 等待 CoroutineScope 的完成
- javascript - gridstack.js:添加的小部件现在可拖动
- php - 如何使用 PHP 将元素的键值推送到 array_push
- android - 如何将 3d 模型 (.obj) 导入 Android Studio?