首页 > 解决方案 > 关于使用连接表字段作为谓词条件的持久性问题

问题描述

我正在尝试通过我们实体中的多个字段从A8SPT282具有表连接器的表中获取数据:A8SPT214

@OneToOne
@JoinColumns(value = {@JoinColumn(name = "ORIGINATOR", referencedColumnName ="ORIGINATOR",insertable = false, updatable = false),
@JoinColumn(name = "HUD_OFFICE", referencedColumnName = "HUD_OFFICE", insertable = false, updatable = false),
@JoinColumn(name = "FISCAL_YEAR", referencedColumnName ="FISCAL_YEAR", insertable = false, updatable = false),
@JoinColumn(name = "TRANSMITTAL_ID", referencedColumnName = "TRANSMITTAL_ID", insertable = false, updatable = false),
@JoinColumn(name = "NAID", referencedColumnName = "NAID",insertable = false, updatable = false) })

private A8SPT214 a8spt214 ;

当我使用持久性获取表 282 时,其中构建器标准基于表 214 中的字段,但在使用 a8spt214.hudOffice 字段时出现错误:

  CriteriaBuilder builder = samsSessionFactory.getCriteriaBuilder();
    javax.persistence.criteria.CriteriaQuery<A8SPT282> criteria = builder.createQuery(A8SPT282.class);
    Root<A8SPT282> root = criteria.from(A8SPT282.class);
    criteria.select(root);
    if (disbursementSequence != null) {
        Predicate pred1 = builder.and(
                builder.equal(root.get("a8spt214.hudOffice"), hudOffice),
                builder.equal(root.get("a8spt214.naid"), naid),
                builder.equal(root.get("a8spt214.disbursementSequence"), disbursementSequence));
        criteria.where(pred1);
    }

我们是否允许在持久性中使用连接表中的字段作为谓词构建器的一部分?

谢谢

标签: javapersistence

解决方案


推荐阅读