繁体   English   中英

在 Spring 数据 JPA 中查询关系 @ManyToOne 的方法

[英]Query method in Spring Data JPA for relation @ManyToOne

错误:

org.springframework.beans.factory.BeanCreationException:创建名为“postRepository”的bean时出错:FactoryBean在创建object时抛出异常; 嵌套异常是 java.lang.IllegalArgumentException:无法为方法公共抽象 org.springframework.data.domain.Page com.example.forumProject.Authentication.Repository.PostRepository.findByTags.java. data.domain.Pageable),标签上的运算符 SIMPLE_PROPERTY 需要标量参数。 在公共抽象 org.springframework.data.domain.Page com.example.forumProject.Authentication.Repository.PostRepository.findByTags(java.util,List.org.springPageframework.data.domain. .

这是 class 定义的帖子:

@EqualsAndHashCode(callSuper = true)
@Entity
@Data
@Table(name = "posts", uniqueConstraints = { @UniqueConstraint(columnNames = { "title" }) })
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class Post extends UserDateAudit {
    ... 
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "category_id")
    private Category category;

    @JsonIgnore
    @OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<Comment> comments;

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "post_tag", joinColumns = @JoinColumn(name = "post_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "tag_id", referencedColumnName = "id"))
    private List<Tag> tags;

存储库:

@Repository
public interface PostRepository extends JpaRepository<Post, Long> {
    Page<Post> findByCreatedBy(Long userId, Pageable pageable);

    Page<Post> findByCategory(Long categoryId, Pageable pageable);

    Page<Post> findByTags(List<Tag> tags, Pageable pageable);

    Long countByCreatedBy(Long userId);
}

如果我们想要带有 Spring 数据的动态查询 JPA 带有In子句的规范

我们需要在方法名称中使用关键字In ,如下所示。

Page<Post> findByTagsIn(List<Tag> tags, Pageable pageable);

您可以在此处找到方法名称中的所有受支持的关键字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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