簡體   English   中英

子sql中的Hibernate條件一對多和子句

[英]Hibernate Criteria One to Many And clause in Child sql

我有一個使用條件從數據庫中獲取記錄的查找所有方法。

類:

@Entity
@Table(name = "T_REF_MODEL")
public class RefModelORM extends AuditModelORM  implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1264852500063416982L;

    @Column(name = "REF_MODEL_ID")
    @Id
    private String refModelId;

    @Column(name="NAME")
    private String name;

    @Column(name="DESCRIPTION")
    private String description;

    @Column(name="TENANT_ID")
    private String tenantId;

    @Column(name="IS_TRAINED")
    private String isTrained;

    @Column(name = "REF_INPUT_EVENT_TYPE_ID")
    private String inputEventTypeId;

    @Column(name = "REF_MODEL_TYPE_ID", insertable=false, updatable=false)
    private String modelTypeId;

    @JoinColumn(nullable = false, name = "REF_MODEL_TYPE_ID", referencedColumnName = "REF_MODEL_TYPE_ID" )
    @ManyToOne(fetch=FetchType.LAZY)
    private ModelTypeORM modelType;

    @OneToMany(mappedBy="refmodel", fetch=FetchType.EAGER)
    private List<RefModelParameterORM> parameters;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public ModelTypeORM getModelType() {
        return modelType;
    }

    public void setModelType(ModelTypeORM modelType) {
        this.modelType = modelType;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }


    public String getIsTrained() {
        return isTrained;
    }

    public void setIsTrained(String isTrained) {
        this.isTrained = isTrained;
    }


    public String getInputEventTypeId() {
        return inputEventTypeId;
    }

    public void setInputEventTypeId(String inputEventTypeId) {
        this.inputEventTypeId = inputEventTypeId;
    }

    public String getRefModelId() {
        return refModelId;
    }

    public void setRefModelId(String refModelId) {
        this.refModelId = refModelId;
    }

    public List<RefModelParameterORM> getParameters() {
        return parameters;
    }

    public void setParameters(List<RefModelParameterORM> parameters) {
        this.parameters = parameters;
    }


    public String getModelTypeId() {
        return modelTypeId;
    }

    public void setModelTypeId(String modelTypeId) {
        this.modelTypeId = modelTypeId;
    }

    @Override 
    public String toString() {
        return "RefModelORM [name=" + name + ", description=" + description + ", tenantId=" + tenantId + ", isTrained="
                + isTrained + ", inputEventTypeId=" + inputEventTypeId + ", modelTypeId=" + modelTypeId
                + ", refModelId=" + refModelId + "]";
    }
}

方法:

public List<RefModelORM> findAllRefModels(RefModelORM filter) throws SQLException {

        CriteriaBuilder builder = entityManager.getCriteriaBuilder();

        CriteriaQuery<RefModelORM> criteria = builder.createQuery(RefModelORM.class);
        Root<RefModelORM> refModelORM = criteria.from(RefModelORM.class);
        criteria.select(refModelORM);

        List<Predicate> predicates= new ArrayList<Predicate>();

        if (StringUtils.hasLength(filter.getStatus())) {
            if(CommonUtils.isValidStatus(filter.getStatus(), true)){
                predicates.add(builder.equal(refModelORM.get("status"), filter.getStatus()));
            }else{
                throw new ValidationException("Invalid status : " + filter.getStatus());
            }
        } else {
            predicates.add(builder.notEqual(refModelORM.get("status"), "D"));
        }
        if (StringUtils.hasLength(filter.getModelTypeId())){                
            predicates.add(builder.equal(refModelORM.get("modelTypeId"), filter.getModelTypeId()));
        }
        if (StringUtils.hasLength(filter.getName())) {
            predicates.add(builder.equal(refModelORM.get("name"), filter.getName()));

        }
        if (StringUtils.hasLength(filter.getCreateUser())) {
            predicates.add(builder.equal(refModelORM.get("createUser"), filter.getCreateUser()));
        }
        if (StringUtils.hasLength(filter.getUpdateUser())) {
            predicates.add(builder.equal(refModelORM.get("updateUser"), filter.getUpdateUser()));
        }

        criteria.where(builder.and(predicates.toArray(new Predicate[]{})));
        List<RefModelORM> list = entityManager.createQuery(criteria).getResultList();
        return list;
    }

查詢輸出:

Hibernate: select refmodelor0_.REF_MODEL_ID as REF_MODEL_ID1_0_, refmodelor0_.CREATE_DATE as CREATE_DATE2_0_, refmodelor0_.CREATE_USER as CREATE_USER3_0_, refmodelor0_.STATUS as STATUS4_0_, refmodelor0_.UPDATE_DATE as UPDATE_DATE5_0_, refmodelor0_.UPDATE_USER as UPDATE_USER6_0_, refmodelor0_.DESCRIPTION as DESCRIPTION7_0_, refmodelor0_.REF_INPUT_EVENT_TYPE_ID as REF_INPUT_EVENT_TY8_0_, refmodelor0_.IS_TRAINED as IS_TRAINED9_0_, refmodelor0_.REF_MODEL_TYPE_ID as REF_MODEL_TYPE_ID10_0_, refmodelor0_.NAME as NAME11_0_, refmodelor0_.TENANT_ID as TENANT_ID12_0_ from T_REF_MODEL refmodelor0_ where refmodelor0_.STATUS<>?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?
Hibernate: select parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_0_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_0_, parameters0_.REF_MODEL_TYPE_PARAMETER_ID as REF_MODEL_TYPE_PAR1_1_1_, parameters0_.REF_MODEL_ID as REF_MODEL_ID2_1_1_, parameters0_.REF_MODEL_PARAMETER_ID as REF_MODEL_PARAMETE3_1_1_, parameters0_.CREATE_DATE as CREATE_DATE4_1_1_, parameters0_.CREATE_USER as CREATE_USER5_1_1_, parameters0_.STATUS as STATUS6_1_1_, parameters0_.UPDATE_DATE as UPDATE_DATE7_1_1_, parameters0_.UPDATE_USER as UPDATE_USER8_1_1_, parameters0_.DESCRIPTION as DESCRIPTION9_1_1_, parameters0_.NAME as NAME10_1_1_, parameters0_.VALUE as VALUE11_1_1_ from T_REF_MODEL_PARAMETER parameters0_ where parameters0_.REF_MODEL_ID=?

第一個sql是獲取父記錄,其余的是獲取子記錄。

如何在子sql中添加和從句,例如T_REF_MODEL_PARAMETER parameters0_,其中parameters0_.REF_MODEL_ID =? 和參數0_.STATUS =?

基本上我想將父母的身份傳遞給孩子。

在此先多謝!

Criteria person = session.getCurrentSession().createCriteria(Person.class).createAlias("personId", "personId");

person.add(Restrictions.disjunction().add(Restrictions.ilike("PersonFirstname",Search,MatchMode.ANYWHERE))
.add(Restrictions.ilike("personId.Jacket",Search,MatchMode.ANYWHERE))
.add(Restrictions.ilike("personId.Color",Search,MatchMode.ANYWHERE))
.add(Restrictions.ilike("personId.Size",Search,MatchMode.ANYWHERE)));

從示例限制中,您可以在條件之間插入並獲得所需的輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM