错误的Jparepository java.lang.IllegalArgumentException

时间:2018-12-06 15:27:21

标签: database spring spring-boot spring-data-jpa

错误:

2018-12-06 18:18:34.601  WARN 2304 --- [nio-8080-exec-8] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by handler execution: org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [2] did not match expected type [[B (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [2] did not match expected type [[B (n/a)]

实体:

 public class DBFonts {
     @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        private Long id;
        private String nameFont;
    @ElementCollection
        @CollectionTable(
                name="SFont",
                joinColumns=@JoinColumn(name="SFont_id")
        )
        @Lob @Basic(fetch = FetchType.LAZY)
        @Column(length=100000)
        private List<byte[]> standartFonts;
        }

回购:

    public interface FontRepo extends JpaRepository<DBFonts,Long> {
      List<byte[]> findByStandartFonts(Long sfontid);

    }

主要:

 List<byte[]> dBfontSt = fontRepo.findByStandartFonts(2L);

日期标准字体:

enter image description here

可能是什么问题?任何信息都会有用)

1 个答案:

答案 0 :(得分:1)

JpaRepository findByStandartsFonts方法需要List<byte[]>类型的参数。它不能接受Long类型。顺便说一句,值类型集合的生命周期完全由其拥有的实体控制。因此,不可能直接在@CollectionTable上进行查询。尝试引入一个新的实体和适当的关联。