【发布时间】:2021-03-16 20:02:30
【问题描述】:
错误:
org.springframework.beans.factory.BeanCreationException:创建名为“postRepository”的bean时出错:FactoryBean在创建对象时抛出异常;嵌套异常是 java.lang.IllegalArgumentException: Failed to create query for method public abstract org.springframework.data.domain.Page com.example.forumProject.Authentication.Repository.PostRepository.findByTags(java.util.List,org.springframework. data.domain.Pageable)!标签上的运算符 SIMPLE_PROPERTY 需要标量参数,在方法 public abstract org.springframework.data.domain.Page com.example.forumProject.Authentication.Repository.PostRepository.findByTags(java.util.List,org 中找到接口 java.util.List .springframework.data.domain.Pageable)。
这是定义的 Post 类:
@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);
}
【问题讨论】:
-
您应该将您的方法名称 findByTags 重命名(修复)为 findByTagsIsIn
标签: java spring-boot jpa