hibernate - 多对一映射上的休眠过滤器
问题描述
@FilterDef(name = CommonConstants.PRODUCT_FILTER, parameters = {@ParamDef(name="products", type = "long")})
@Filter(name = CommonConstants.PRODUCT_FILTER, condition = "alert.product in (:products)")
@NoArgsConstructor
@SuperBuilder
public class AlertNotificationUserJpaEntity extends AbstractJpaEntity {
@Column(name = "USER_ID")
private Long user;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "ALERT_ID")
private AlertJpaEntity alert;
}
@FilterDef(name = CommonConstants.PRODUCT_FILTER, parameters = {@ParamDef(name="products", type = "long")})
@Filter(name = CommonConstants.PRODUCT_FILTER, condition = "PRODUCT_ID in (:products)")
@Table(name = "alert")
@NoArgsConstructor
@SuperBuilder
public class AlertJpaEntity extends AbstractJpaEntity {
private static final long serialVersionUID = 1L;
@Column(name = "PARENT")
private Long parent;
@Column(name = "PRODUCT_ID")
private Long product;
@Column(name = "SUBPRODUCT_ID")
private Long subProduct;
}
当我运行声明性方法 findByUser(Long userId) 时,它会抛出错误说 alert.product 不存在
有什么办法可以取
就像是
select alertNotif from AlertNotificationUserJpaEntity alertNotif inner join AlertJpaEntity alert on alertNotif.alert.id = alert.id where alert.product in (:product)
解决方案
你不能只使用这样的查询吗?
@Query("from AlertNotificationUserJpaEntity alertNotif where alertNotif.alert.product in :products")
public findAllByProduct(@Param("product") List<Long> products);
推荐阅读
- javascript - 在 click() 发生之前访问 AJAX URL
- java - com.fasterxml.jackson.databind.exc.InvalidDefinitionException
- html - 按标签和类抓取数据
- vagrant - vagrant up 命令返回错误
- html - 调整大小并添加白色边框,以便在以角度上传图像时始终有相同的图片大小
- reactjs - 代码未通过 AWS lambda 函数更新
- javascript - 简单的 react-spring 组件在 gatsby 中不起作用 - 元素类型无效:预期为字符串或类/函数,但得到:未定义
- python - 如何从 python 3 的嵌套列表中删除多个项目?
- typescript - 如何在 Angular 7 的 ngx-dropzone-wrapper 中显示服务器上的现有文件
- excel - 每 2 周查找交易日期(如果是周六或周日,则显示周五日期)