【问题标题】:How do I track a computed field fetched by a custom JPA @Query?如何跟踪自定义 JPA @Query 获取的计算字段?
【发布时间】:2018-11-05 06:35:27
【问题描述】:

我创建了一个使用 @ReadOnlyProperty 注释的字段,以便我可以跟踪计算的字段值。但是,当我进行正常的 findAll 查询时,我收到一条 SQL 错误警告,指出该列 (hasChildren) 不存在。我已经尝试删除 GET 方法,但它根本没有解决问题。我也尝试使用 @Transient 注释,但我无法将值保存在我的属性中。

@Entity
@Table
public class Parent extends BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;

    @OneToMany( fetch = FetchType.LAZY)
    private List<Child> childs;

    // Computed column that come from @Query annotation
    @ReadOnlyProperty
    private boolean hasChildren;

    //Getters
    //Setters
}

【问题讨论】:

    标签: java spring hibernate jpa jpql


    【解决方案1】:

    尝试使用 JPA @Transient 注释该字段。这应该告诉它不要将其保存在数据库中。

    【讨论】:

    • 当我用 JPAs @Transient 注释字段时,查询结果不会更改该属性。
    • 你试过类似 hasChildren(){return childs!=null && childs.size>0}
    • 我简化了课程。事实上,我有 3 个类可能是这个“父”类的子类。因此,我正在使用改进的查询来搜索是否至少有一个孩子。
    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2019-06-03
    • 2023-03-22
    相关资源
    最近更新 更多