JPA Example类使用时DatiAccessoriFascicoloModel.from方法未识别问题
JPA Example类使用时DatiAccessoriFascicoloModel.from方法未识别问题
嘿,我一眼就看穿问题所在啦!你参考的教程里用到的Model.from()并不是JPA或者Spring Data JPA自带的标准API,而是教程作者自己在他的实体类里自定义的静态工厂方法。而你的DatiAccessoriFascicoloModel类里根本没写这个方法,Eclipse当然识别不了啦!
给你两种简单的解决办法:
方法一:给你的实体类添加静态from方法
在DatiAccessoriFascicoloModel类里补上这个静态方法,用来快速创建实例并赋值:
public static DatiAccessoriFascicoloModel from(String unused1, long idFascicolo, long idRegistro, String unused2, String unused3) { DatiAccessoriFascicoloModel model = new DatiAccessoriFascicoloModel(); model.setIdFascicolo(idFascicolo); model.setIdRegistro(idRegistro); // 如果后续需要用到其他参数,也可以在这里对应赋值 return model; }
写完之后,你原来的调用代码就能正常工作了。
方法二:直接手动赋值构建实例(更简单)
其实教程里用静态方法只是为了让代码更简洁,你完全可以跳过它,直接用你已经创建的实例来构建Example:
public DatiAccessoriFascicoloModel findByIdFascAndIdRegistr(long idFascicolo, long idRegistro){ DatiAccessoriFascicoloModel datiAccessFascic = new DatiAccessoriFascicoloModel(); // 直接给需要作为过滤条件的字段赋值 datiAccessFascic.setIdFascicolo(idFascicolo); datiAccessFascic.setIdRegistro(idRegistro); Example<DatiAccessoriFascicoloModel> example = Example.of(datiAccessFascic); Optional<DatiAccessoriFascicoloModel> actual = datiAccessoriFascicoloRepository.findOne(example); return actual.orElse(null); // 这里用orElse可以简化原来的if-else逻辑哦 }
另外还要提醒你一句:确认一下你的Example类导入的是Spring Data JPA的正确包org.springframework.data.domain.Example,别导错其他包了。如果你的Spring Data版本比较新,findOne(Example)可能已经被标记为过时,你可以换成findByExample(example).stream().findFirst()来替代,效果是一样的。
备注:内容来源于stack exchange,提问作者Rosario
相关产品推荐
相关产品推荐

