【问题标题】:alternative of @formula in jpajpa中@formula的替代品
【发布时间】:2013-06-26 11:14:05
【问题描述】:

对于在休眠中使用的@formula,是否有任何替代解决方案?我需要通过jpa使用它,例如:

@Formula("select count(1) from Market m where m.defaultAirportCode=airportCode")
private Boolean isDefault;

【问题讨论】:

    标签: java hibernate jpa orm


    【解决方案1】:

    您可以使用注释和一种方法的组合

    @Transient
    private Boolean isDefault;
    
    @PostLoad
    private void setDefault() {
    this.isDefault=this.defaultAirportCode.equals(this.airportCode);
    }
    

    【讨论】:

    • 这种方法的缺点是您不能在 JPQL 中使用瞬态字段。看到这个问题:stackoverflow.com/questions/13154535/…
    • 这不是缺点,这就是@Transient 的工作方式,但我会问你一个问题{@Formula 是否与 JPQL 一起工作?}
    • @BassemRedaZohdy - 我认为不,我无法访问它,不幸的是 - 我尝试在本机 JPQL 查询中访问它,它说它不存在:(
    【解决方案2】:

    您可以使用包含公式的数据库视图,并将实体映射到视图。

    【讨论】:

    • 是否可以使用 JPQL 在本机查询中访问视图?
    【解决方案3】:

    不,@formula 注释没有纯 JPA 替代方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      相关资源
      最近更新 更多