如何解决如何在Spring Boot中编写存储库查询以按关联键进行过滤?
如何在存储库界面中编写查询以执行WHERE assoc_id =:key?
我有一个名为CmsImpacts
的实体,然后有一个调用ImpactsRepository
的服务,它看起来像这样:
import java.util.List;
public interface ImpactsRepository<T extends CmsImpacts> extends BaseCmsRepository<CmsImpacts> {
@Query("SELECT a FROM #{#entityName} a where a.scenarioId = :scenarioId")
List<CmsImpacts> getByScenarioPaged(
Integer scenarioId,Pageable pageable
);
@Query("SELECT COUNT(a.id) FROM #{#entityName} a where a.scenarioId = :scenarioId")
Integer getAsScenarioCount(
Integer scenarioId
);
}
这种关系的要旨是CmsScenarios
是CmsImpacts
上的一对多。实体关系定义为:
@JsonIgnore
@JsonBackReference
@JoinColumn(name = "scenario_id",referencedColumnName = "id")
@ManyToOne(optional = false,fetch = FetchType.LAZY)
private CmsScenarios scenarioId;
每当我调用我的服务并传递case_id的Integer值时,它都会引发TypeException,因为(理应如此)期望CmsScenario对象,而不是Integer。
错误消息:2020-11-04 15:10:45.764错误128396 --- [io-8080-exec-18] osbwservlet.support.ErrorPageFilter:从请求转发到错误页面[/ api / impacts / list / scenario / 2]由于异常[org.springframework.dao.InvalidDataAccessApiUsageException:参数值[2]与预期的类型[com.vw.asa.entities.cms.CmsScenarios(n / a )];嵌套的异常是java.lang.IllegalArgumentException:参数值[2]与预期的类型[com.vw.asa.entities.cms.CmsScenarios(n / a)]不匹配
执行该查询需要做什么?这也适用于它上面的查询,分页计数器。
注意:
我不想只检索CmsScenarios
对象并调用getImpacts()
,那样将返回所有对象,而且我需要能够对它们进行分页。
解决方法
您必须添加相关实体的ID
@Query("SELECT a FROM #{#entityName} a where a.scenarioId.id = :scenarioId")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。