@查询与预期类型[java.util.Collection(n/a)]不匹配

@查询与预期类型[java.util.Collection(n/a)]不匹配,java,spring-boot,Java,Spring Boot,我有一个名为Tasks的表,其中包含以下列:author、responsible和observators所有这些都是位于Users表中的用户id的FKs。我有一个表,表示用户和任务之间的多对多关系,它只包含两列:task_id和user_id。我的问题是,我想选择当前授权用户正在执行的所有任务 我的任务模型: @Entity @Table public class Task { private String title; private String description; @Colum

我有一个名为Tasks的表,其中包含以下列:author、responsible和observators所有这些都是位于Users表中的用户id的FKs。我有一个表,表示用户和任务之间的多对多关系,它只包含两列:task_id和user_id。我的问题是,我想选择当前授权用户正在执行的所有任务

我的任务模型:

@Entity
@Table
public class Task {

private String title;

private String description;

@Column(name = "delete_status")
private Boolean deleteStatus;

@OneToOne
@JoinColumn(name = "task_status_id")
private TaskStatus status;

@OneToMany(mappedBy = "task")
@LazyCollection(LazyCollectionOption.FALSE)
private List<Comment> comments;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "due_date")
private Date dueDate;

@ManyToOne
@JoinColumn(name = "author_id", updatable = false)
private User author;

@ManyToOne
@JoinColumn(name = "responsible_id")
private User responsible;

@JsonManagedReference
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "observers_users",
        joinColumns = {@JoinColumn(name = "observers_id", referencedColumnName = "id")},
        inverseJoinColumns = {@JoinColumn(name = "users_id", referencedColumnName = "id")})
@LazyCollection(LazyCollectionOption.FALSE)
private List<User> observers;
}
@实体
@桌子
公开课任务{
私有字符串标题;
私有字符串描述;
@列(name=“delete_status”)
私人身份;
@奥内托内
@JoinColumn(name=“任务\状态\ id”)
私人任务状态;
@OneToMany(mappedBy=“任务”)
@LazyCollection(LazyCollectionOption.FALSE)
私人名单评论;
@JsonFormat(shape=JsonFormat.shape.STRING,pattern=“yyyy-MM-dd-HH:MM:ss”)
@列(name=“到期日”)
私人约会日期;
@许多酮
@JoinColumn(name=“author\u id”,updateable=false)
私人用户作者;
@许多酮
@JoinColumn(name=“responsible\u id”)
私人用户负责;
@JsonManagedReference
@多个(级联=级联类型.ALL)
@JoinTable(name=“观察员\用户”,
joinColumns={@JoinColumn(name=“observators\u id”,referencedColumnName=“id”)},
inverseJoinColumns={@JoinColumn(name=“users\u id”,referencedColumnName=“id”)}
@LazyCollection(LazyCollectionOption.FALSE)
非公开名单观察员;
}
我的问题是:

@Query("FROM Task t WHERE t.observers = ?1 ORDER BY t.id DESC")
List<Task> findWhereUserObserver(
        @Param("observers") List<User> user
);
@Query(“来自任务t,其中t.observators=?按t.id描述的1个订单”)
列出findWhereUserObserver(
@参数(“观察员”)列表用户
);
无论我如何更改查询,都会得到相同的错误:参数值[User(…)]与预期类型[java.util.Collection(n/a)]不匹配。


因为t.observers是一种列表类型,所以我不知道如何在WHERE条件下的SQL查询中使用它。我想在此列表中找到我当前授权的用户,但不知道如何在SQL查询中找到。或者我应该吗?

当你说像T.obsers这样的东西时,它意味着你在一个列表中会有多个观察者,比如IN(User1,User2,User3)等等,但你只有一个用户。在语句中签出SQL

您正在使用子句中的
,这需要一个集合,您要传入一个
用户
。您好,我知道,关键是您不能这样做:?1 IN t.obsers。而不是在一个集合中传入一个用户,即使它包含一个。我也这样做了,同样的错误。t、 观察员=列表用户。t、 listUsersSigh中的观察员<代码>=
仅适用于单个元素
=
用于单张
,在
中用于收藏。嗨,我知道,关键是你不能这样做:1?在t。我想找到用户存在于观察者中的任务,但我不知道如何做,这就是我问问题的原因