java—如何使jpql查询在SpringJPA存储库中使用可选返回?

kiayqfof  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(285)

我在我的jparepository中使用jpql查询。问题是,每次调用带有可选返回的方法时,都会出现以下错误:
java.lang.classcastexception:类[ljava.lang.object;不能强制转换到com.netpos.pagvendas.campaignuser.entity.campaignuser类([ljava.lang.object;位于加载程序“bootstrap”的模块java.base中;com.netpos.pagvendas.campaignuser.entity.campaignuser位于加载程序org.springframework.boot.devtools.restart.classloader.restartclassloader@1c069e07的未命名模块中)
这是我的存储库类,我尝试使用的方法是: findByCampaignCodUniqueCampaignAndCodTenant(String codUniqueCampaign, String codTenant) ```
@Repository
public interface CampaignUserRepository extends JpaRepository<CampaignUser, CampaignUserPk> {

@Query("SELECT campaignUser, campaignUser.campaign from CampaignUser campaignUser " +
        "where campaignUser.codTenant = :codTenant " +
        "and campaignUser.flgFinished = false " +
        "and :now >= campaignUser.campaign.datStart and :now <= campaignUser.campaign.datEnd " +
        "order by campaignUser.datCreation ASC")
List<CampaignUser> findActiveCampaign(String codTenant, ZonedDateTime now);

@Query("SELECT campaignUser, campaignUser.campaign from CampaignUser campaignUser " +
        "where campaignUser.idtCampaign = :idtCampaign ")
List<CampaignUser> findByIdtCampaign(long idtCampaign);

@Query("SELECT campaignUser, campaignUser.campaign from CampaignUser campaignUser " +
        "where campaignUser.campaign.codUniqueCampaign = :codUniqueCampaign " +
        "and campaignUser.codTenant = :codTenant")
Optional<CampaignUser> findByCampaignCodUniqueCampaignAndCodTenant(String codUniqueCampaign, String codTenant);

}

是否可以在jparepository中对jpql查询使用optional?
a64a0gku

a64a0gku1#

为什么选择中有两个对象?加载 CampaignUserCampaign 通过单个查询,您必须以这种方式启动查询 select campaignUser from CampaignUser campaignUser join fetch campaignUser.campaign campaign 甚至 from CampaignUser campaignUser join fetch campaignUser.campaign campaign ```
@Query("SELECT campaignUser from CampaignUser campaignUser join fetch campaignUser.campaign campaign " +
"where campaign.codUniqueCampaign = :codUniqueCampaign " +
"and campaignUser.codTenant = :codTenant")
Optional findByCampaignCodUniqueCampaignAndCodTenant(String codUniqueCampaign, String codTenant);

相关问题