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
构建一个查询,该查询将返回来自passedUser
(要传递logged-inUser
)的所有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版本,在这些查询中我遇到了很多错误的语法错误。。最好运行代码,看看会发生什么