Hea*_*oso 3 java spring hibernate spring-data spring-data-jpa
我似乎无法添加与相关实体匹配的 QueryByExample 探针。
@Entity
@Data
public class ArtistEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String description;
@ManyToMany(fetch = FetchType.EAGER)
private Set<GenreEntity> genreList = new HashSet<>();
@Version
private Long version;
}
Run Code Online (Sandbox Code Playgroud)
@Entity
@Data
public class GenreEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@Version
private Long version;
}
Run Code Online (Sandbox Code Playgroud)
@Repository
public interface ArtistRepository extends JpaRepository<ArtistEntity, Long> {
}
Run Code Online (Sandbox Code Playgroud)
GenreEntity genreEntity = new GenreEntity();
genreEntity.setName("Heavy Metal");
ArtistEntity artistEntity = new ArtistEntity();
Set<GenreEntity> genreEntitySet = new HashSet<>();
genreEntitySet.add(genreEntity);
artistEntity.setGenreList(genreEntitySet);
Example<ArtistEntity> example = Example.of(artistEntity);
Pageable pagination = PageRequest.of(0, 10);
artistRepository.findAll(example, pagination);
Run Code Online (Sandbox Code Playgroud)
我还尝试查看有关 QBE 的 Spring Data JPA 文档,但没有找到任何具体提及此限制的内容,这让我认为这是意外行为。
Query By Example。spring 文档指出这仅适用于 SingularAttribute。
目前,只有 SingularAttribute 属性可用于属性匹配。https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#query-by-example.running
您想要按属性 a 进行搜索Set<GenreEntity> (genreList),该属性是 a PluralAttribute。无法通过该字段进行搜索。
Specification。高级 Spring Data JPA - 规范和 Querydsl。https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/
为此,您需要从接口扩展JpaSpecificationExecutor:
public interface ArtistRepository extends
JpaRepository<ArtistEntity>, JpaSpecificationExecutor<ArtistEntity> {}
Run Code Online (Sandbox Code Playgroud)
Specification<T>。findAll(Specification<T> spec, Pageable pageable).| 归档时间: |
|
| 查看次数: |
3817 次 |
| 最近记录: |