Я хочу написать JPQL-запрос для выборки строк, имеющих значения идентификатора таблицы «многие ко многим». У меня есть два класса:
@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, чтобы он работал?