简体   繁体   English

如何在Spring Data Jpa中查询@JoinTable?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM