【发布时间】:2020-06-11 08:32:39
【问题描述】:
在 pgAdmin 中运行以下查询时,一切都很好,但是当我从 java 代码运行查询时出现错误。
我尝试转换变量但没有结果,我收到转换语法错误
查询界面:
public interface SeanceRepository extends JpaRepository<Seance, Integer>{
@Query(value = "select * from seance, patient where extract(month from date) = ?1 "
+ "and extract(year from date) = ?2 and patient.id = seance.patient_id",
nativeQuery = true)
public List<Object> getSeanceByMonthYear(String month, String year);
}
错误:
org.postgresql.util.PSQLException: ERREUR: l'opérateur n'existe pas : double precision = character varying
Indice : Aucun opérateur ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.
Position : 62
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440) ~[postgresql-42.2.5.jar:42.2.5]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183) ~[postgresql-42.2.5.jar:42.2.5]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308) ~[postgresql-42.2.5.jar:42.2.5]
Patient.java
@Entity
@Table(name = "Patient")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class Patient {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String firstName;
private String lastName;
private String cin;
private Date birthDate;
private String phoneNumber;
private Boolean active;
//getters and setters
}
seance.java
@Entity
@Table(name = "Seance")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class Seance {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private Date date;
@OneToOne
private Patient patient;
@OneToOne
private TypeConsultation typeConsultation;
private String motif;
//getters and setters
【问题讨论】:
-
你能把错误信息翻译成英文吗?
-
@Jens
error operator does not exist double precision = character varying -
看起来
extract(month from date)没有返回字符。尝试明确投射它
标签: postgresql spring-boot spring-data-jpa spring-data