我有一个名为Affecter的类,其中包含一些属性和一些ManyToOne外键。我想创建一个查询,该查询使用此外键的参数搜索某些数据。但是,此外键由我的类中的一个对象表示,因此当我进行查询时,出现以下错误:java.lang.IllegalArgumentException:参数值与除类型
之外的其他值不匹配这是我的实体:
package org.safran.cockpit.entities;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import lombok.Data;
import lombok.ToString;
@Table(name = "affecter")
@Data
@Entity
public class Affecter implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", insertable = false, nullable = false)
private Integer id;
@Column(name = "dateEntree", nullable = false)
private Date dateEntree;
@Column(name = "dateSortie")
private Date dateSortie;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="idAffaire", nullable = false)
private Affaire affaire;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="idService", nullable = false)
private Service service;
这是我的查询:
@Query(value = "SELECT a FROM Affecter a WHERE a.service = ?1 AND
a.dateSortie=''")
public List<Affecter> findAffecterByService(Integer service);
这就是我调用查询的方式:
@GetMapping(value="/listAffecterService/{idService}")
public List<Affecter> listAffecterService(@PathVariable(name="idService") int idService){
return affecterRepository.findAffecterByService(idService);
}
有人知道如何解决这个问题吗?谢谢
答案 0 :(得分:-1)
SELECT a FROM Affecter a WHERE a.service = ?1
因此,您正在将a.service
与参数进行比较。 a.service
属于服务类型。因此,您的参数也必须是Service类型。
鉴于您具有服务的ID,或者首先获取与此ID相关联的Service,然后将服务作为查询的参数传递,或者在查询中比较ID:
SELECT a FROM Affecter a WHERE a.service.id = ?1