如何在spring数据jpa派生查询中使用ORDERBY子句和嵌入字段?

pftdvrlh  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(293)

我有两个实体:文章和类别

@AllArgsConstructor
@Entity
@ToString
@Table(name = "articles")
public class Article {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "id")
   private Long id;

   @Column(name = "title", nullable = false, unique = true)
   private String title;

   @Embedded
   private Audit audit = new Audit();

   @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
   @JoinTable(name = "articles_categories", joinColumns = {@JoinColumn(name = "articles_id")}, inverseJoinColumns = {@JoinColumn(name = "categories_id")})
   @JsonManagedReference
   private List<Category> categories = new ArrayList<>();

现在是实体类别,然后是实体类别

@Getter
@Setter
@Accessors ( chain = true )
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table ( name = "category" )
public class Category {

  @Id
  @GeneratedValue ( strategy = GenerationType.IDENTITY )
  @Column ( name = "id" )
  private Long id;

  @Column ( name = "name", nullable = false, unique = true )
  private String name;

  @ManyToMany ( fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST , CascadeType.MERGE }, mappedBy = "categories" )
  @JsonBackReference
  private Set<Article> categories = new HashSet<>();
}

现在实体嵌入

@Getter
@Setter
@Embeddable
@RequiredArgsConstructor
public class Audit {

   @Column ( name = "created_on" )
   private Date createdOn;

   @Column ( name = "updated_on" )
   private Date updatedOn;

   @PrePersist
   public void prePersist ( ) {
      createdOn = new Date ( );
   }

   @PreUpdate
   public void preUpdate ( ) {
       updatedOn = new Date ( );
   }
}

在我的文章库中,我有以下jpa。

@Repository
public interface ArticleRepository extends JpaRepository < Article, Long > { 

   Page<Article> findByCategoriesIn (List<Category> categories, Pageable pageable);

}

这是正确的工作,并返回一页的文章,但我想按创建日期使用 @Embeeded 注解。
我怎么能用这个?

jk9hmnmh

jk9hmnmh1#

试着用这样的方法:

Page<Article> findByCategoriesInOrderByAudit_CreatedOnDesc(List<Category> categories, Pageable pageable);

另请参见文档的本节和本节。

相关问题