我在我的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?
1条答案
按热度按时间a64a0gku1#
为什么选择中有两个对象?加载
CampaignUser
与Campaign
通过单个查询,您必须以这种方式启动查询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);