Java 在Crudepository中创建JPQL查询

Java 在Crudepository中创建JPQL查询,java,hibernate,jpa,spring-data-jpa,jpql,Java,Hibernate,Jpa,Spring Data Jpa,Jpql,我正在尝试使用JPQL构建一个查询,该查询将返回来自passedUser(要传递logged-inUser)的所有ToDoItems 以下是我目前的资料,我不知道如何准确构建: public interface UserRepository extends CrudRepository<User, Long> { @Query(" from User u ") public Iterable<ToDoItem> findAllToDosForLoggedIn

我正在尝试使用
JPQL
构建一个查询,该查询将返回来自passed
User
(要传递logged-in
User
)的所有
ToDoItems

以下是我目前的资料,我不知道如何准确构建:

public interface UserRepository extends CrudRepository<User, Long> {

   @Query(" from User u ")
   public Iterable<ToDoItem> findAllToDosForLoggedInUser(@Param("user") User user);

}
User.java

@Entity
@Table (name = "TO_DO_ITEM")
public class ToDoItem extends BaseEntity {

   @Column(name = "TITLE", nullable = false)
   private String title;

   @Column(name = "COMPLETED")
   private boolean completed;

   @Column(name = "DUE_DATE", nullable = false)
   @Temporal(TemporalType.DATE)
   protected Calendar dueDate;

   // a ToDoItem is only associated with one user
   @ManyToOne(cascade=CascadeType.PERSIST)
   @JoinColumn(name = "USER_ID")
   private User user;


   // JPA demands empty contructor
   public ToDoItem() {}

   public ToDoItem(User user, String title, Calendar dueDate) {
      this.user = user;
      this.title = title;
      this.dueDate = dueDate;
   }
}
@Entity
@Table (name = "USERS")
public class User extends BaseEntity {

   @Column(name = "USERNAME")
   private String username;

   @Column(name = "PASSWORD")
   private String password;

   @Column(name = "EMAIL")
   private String email;

   // user can have many ToDoItems
   @OneToMany(cascade = CascadeType.ALL)
   private Set<ToDoItem> toDoItems;

   // JPA demands empty constructor
   public User() {}

   public User(String username, String password, String email) {
      this.username = username;
      this.password = password;
      this.email = email;
   }
}
@实体
@表(name=“USERS”)
公共类用户扩展BaseEntity{
@列(name=“USERNAME”)
私有字符串用户名;
@列(name=“PASSWORD”)
私有字符串密码;
@列(name=“EMAIL”)
私人字符串电子邮件;
//用户可以有许多待办事项
@OneToMany(级联=级联类型.ALL)
私有设置为doitems;
//JPA需要空构造函数
公共用户(){}
公共用户(字符串用户名、字符串密码、字符串电子邮件){
this.username=用户名;
this.password=密码;
this.email=电子邮件;
}
}

是否有人可以检查我的实体是否正确?

您的查询应该是:

@Query(" select td from User u inner join u.toDoItems td where u = :user")
在用户实体中,映射应具有
mappedBy
属性:

@OneToMany(cascade = CascadeType.ALL, mappedBy="user")
private Set<ToDoItem> toDoItems;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“user”)
私有设置为doitems;

IntelliJ在该查询中高亮显示用户,并说“它无法解析该符号”,我现在无法检查它是否有效-IntelliJ是错误的还是不正确?我有2016版本,在这些查询中我遇到了很多错误的语法错误。。最好运行代码,看看会发生什么