[英]How to query @JoinTable in Spring Data Jpa?
I used the Type filter in BookRepository, but it's not work.我在 BookRepository 中使用了类型过滤器,但它不起作用。
Book.java书.java
@Entity
public class Book {
private Long id;
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinTable(
name = "book_type",
joinColumns = @JoinColumn(name = "book_id"),
inverseJoinColumns = @JoinColumn(name = "type_id")
)
private Type type;
// getter and setter
}
Type.java类型.java
@Entity
public class Type {
private Long id;
private String name;
@OneToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "book_type",
joinColumns = @JoinColumn(name = "type_id"),
inverseJoinColumns = @JoinColumn(name = "book_id")
)
private Collection<Book> books;
// getter and setter
}
BookRepository.java图书资源库.java
@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
Page<Book> findBookListByType(Type type, Pageable pageable);
}
Is not Spring Data Jpa does not support this feature.是不是 Spring Data Jpa 不支持这个特性。
Try this尝试这个
@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
@Query(value="Select b from Book b where b.type = :type")
Page<Book> findAllByType(@Param("type") Type type, Pageable pageable);
}
由于您只有一个@OneToMany
关联,您可以将 FetchType 更改为 EAGER。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.