首页 > 解决方案 > Spring data JPA with @Query 使用内部静态 DTO 类

问题描述

当我有一个没有元素的空枚举和带有字段接口的内部公共静态类时,我使用了一个特定的 DTO:

public enum AccountDTO {
 ;

 private interface Id {
     @Positive Long getId();
 }

 private interface Name {
     @NotBlank String getName();
 }

 private interface Email {
     @NotBlank String getEmail();
 }

 private interface DateOfBirth {
     @Past LocalDate getDateOfBirth();
 }

@Data
 public static class Update implements Id, Name, DateOfBirth {
     Long id;
     String name;
     LocalDate dateOfBirth;

     public Update(Account account) {
         this.id = account.getId();
         this.name = account.getName();
         this.dateOfBirth = account.getDateOfBirth();
     }
 }

}

所以,现在我需要在存储库中使用这个 DTO 和 @Query

@Query("select new ci.ashamaz.auth.dto.AccountDTO.Update"
        + "(a, true)"
        + " from Account a "
        + " group by a ")
Page<AccountDTO.Update> getAllAccountsUpdate(Pageable pageable, boolean needBlameInfo);

现在更新这个词被消息“无法解析符号'ForAdmin'”所覆盖 据我了解,当我们用引号将类名写在包中时,所有点都被解释为包文件夹。那么,有没有办法将内部静态类与 JPA @Query 一起使用?

标签: javasqlspringjpa

解决方案


推荐阅读