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