如何在休眠状态下编写正确的查询?

时间:2019-06-20 13:53:53

标签: java hibernate nhibernate-hql

我有

    PartnerNotification quest = partnerNotificationRepository.findById(login.getAccount().getAccountId());

但无法正常工作,我收到此错误

Type mismatch: cannot convert from Optional<PartnerNotification> to PartnerNotification 

我真的不知道为什么会这样,有人知道运行的是什么,如何解决?     因为我不知道这里出了什么问题,所以我尝试自己创建一个查询,但是仍然在语法中缺少一些内容:

/**
 * @param partnerId .
 * @return Notification
 */
@Query("SELECT  FROM PartnerNotification  WHERE  partner_id = :partnerId")
PartnerNotification findNotificationByPartnerId(@Param("partnerId") Integer partnerId);

我们将不胜感激,这将是有益的!

1 个答案:

答案 0 :(得分:1)

我认为您应该实施它。

示例:

存储库:

@Query("SELECT  FROM PartnerNotification  WHERE  partner_id = :partnerId")
Optional<PartnerNotification> findNotificationByPartnerId(@Param("partnerId") Integer partnerId);

服务:

PartnerNotification quest = partnerNotificationRepository.findById(login.getAccount().getAccountId())
.orElseThrow(RuntimeException::new);

注意: 当找不到accountId时,您可以使用其他解决方案和另一个Exception。 或者您可以使用if else语句(例如:isPresent())