java - 如何在 hibernate 中编写正确的查询?

标签 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);

感谢您的任何帮助,这将会很有帮助!

最佳答案

我认为你应该实现它。

示例:

存储库:

@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 时,您可以使用另一个解决方案和另一个异常。 或者您可以使用 if else 语句(例如: isPresent() )

关于java - 如何在 hibernate 中编写正确的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56687543/

相关文章:

java - 安全存储重复 Web 服务调用的凭据

java - 查看更改时出现错误 JSON 输入意外结束

java - 报告 - 使用已弃用的字段、方法和类,即使使用 @SuppressWarnings 进行抑制

java - Hibernate/JPA 刷新整个集合

hibernate - 意外的 AST 节点

java - 在 Hibernate 中使用 Criteria 连接两个表?

java - 使用分隔符从文本文件填充 JComboBox

java - 如何从 OAuth2 客户端应用程序中的授权服务器获取作为访问 token 响应一部分的附加信息

java - 使用hibernate获取列表形式的对象