between在jpql本机查询中的应用

fquxozlt  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(407)

我试着用 BETWEEN 在jpql中,我已经在sql中对其进行了测试,并且可以正常工作,但是当我在jpql中实现时,出现了一个错误:

  1. Caused by: javax.persistence.PersistenceException:
  2. Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.0.v20170811-d680af5):
  3. org.eclipse.persistence.exceptions.DatabaseException
  4. Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException:
  5. Incorrect syntax near ':'.
  6. Error Code: 102"

我不明白为什么这附近有错误 : ,有人能帮我弄清楚吗?
这是我的密码:

  1. public List<Object[]> reportPendapatan(String tahun) {
  2. String tahun1 = tahun +"-01-01";
  3. String tahun2 = tahun +"-12-31";
  4. return em.createNativeQuery("SELECT p.tanggal, m.nama, pg.nama_jenis, g.nama_guru,pg.harga_masuk FROM Pendaftaran p, Murid m, pengajian pg, Guru g WHERE p.id_murid = m.id_murid and p.tanggal between :tahun and :tahun2 and p.id_guru = g.id_guru and p.id_jenis = pg.id_jenis and p.status=4")
  5. .setParameter("tahun", tahun1)
  6. .setParameter("tahun2", tahun2)
  7. .getResultList();
  8. }
olhwl3o2

olhwl3o21#

根据这个答案,eclipselink在使用 ? 前缀而不是 : ```
public List<Object[]> reportPendapatan(String tahun) {
String tahun1 = tahun +"-01-01";
String tahun2 = tahun +"-12-31";
return em.createNativeQuery(
"SELECT p.tanggal, m.nama, pg.nama_jenis, g.nama_guru,pg.harga_masuk "
+ "FROM Pendaftaran p, Murid m, pengajian pg, Guru g "
+ "WHERE p.id_murid = m.id_murid and p.tanggal between ?tahun and ?tahun2 "
+ "and p.id_guru = g.id_guru and p.id_jenis = pg.id_jenis and p.status=4")
.setParameter("tahun", tahun1)
.setParameter("tahun2", tahun2)
.getResultList();
}

  1. 另一个选项是使用位置参数12 `tahun1` 以及 `tahun2` 分别是:

// ...
return em.createNativeQuery(
"SELECT p.tanggal, m.nama, pg.nama_jenis, g.nama_guru,pg.harga_masuk "
+ "FROM Pendaftaran p, Murid m, pengajian pg, Guru g "
+ "WHERE p.id_murid = m.id_murid and p.tanggal between ? and ? "
+ "and p.id_guru = g.id_guru and p.id_jenis = pg.id_jenis and p.status=4")
.setParameter(1, tahun1)
.setParameter(2, tahun2)
.getResultList();

展开查看全部

相关问题