【发布时间】:2020-03-04 10:47:36
【问题描述】:
我想编写 JPQL 查询来获取具有多对多表的 id 值的行。我有两个课程:
@Entity
@Table(name = "farm")
@Getter
public class Farm {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "name")
private String name;
@ManyToOne()
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "customer_id", referencedColumnName = "id")
private Customer customer;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "user_farm", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "farm_id"))
private List<User> users = new ArrayList<>();
}
和
@Entity
@Table(name = "user")
@Getter
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "email")
private String email;
@Column(name = "password")
private String password;
@ManyToMany(mappedBy = "users")
private List<Farm> farms = new ArrayList<>();
@Column(name = "is_admin")
private Boolean isAdmin;
}
还有一个存储库:
public interface FarmRepository extends JpaRepository<Farm, Long> {
@Query("select f from Farm f join f.users u where u.id=:userId")
List<Farm> findByUserId(@Param("userId") Long userId);
}
但是,我得到了这个休眠错误:
ERROR: column user2_.id does not exist
如何正确编写 jpql 查询以使其正常工作?
【问题讨论】:
标签: spring hibernate spring-data-jpa