java - 将条件转换为自连接的独立条件

标签 java hibernate self-join detachedcriteria

我想知道是否可以将此标准转换为独立的标准。我没有正确理解独立的标准。有人可以帮忙吗?

Criteria crit = sessionC.createCriteria(OP_DOCTOR_VISIT.class, "OPDV1");
crit.createAlias("OPDV1.OP_VISIT", "OPDV2", JoinType.LEFT_OUTER_JOIN, Restrictions.and(Restrictions.eq("OPDV2.FORM", "NEW"), Restrictions.ge("OPDV2.USER_DATETIME", fromdate), Restrictions.le("OPDV2.USER_DATETIME", todate)));
    crit.add(Restrictions.ge("OPDV1.USER_DATETIME", fromdate));
    crit.add(Restrictions.le("OPDV1.USER_DATETIME", todate));
    ProjectionList p1 = Projections.projectionList();
    p1.add(Projections.alias(Projections.count("OPDV1.OP_VISIT_ID"), "TOTAL"));
    p1.add(Projections.count("OPDV2.FORM"));
    p1.add(Projections.alias(Projections.sqlGroupProjection("date(this_.USER_DATETIME) as createdDate", "createdDate", new String[]{"createdDate"}, new Type[]{StandardBasicTypes.DATE}), "DAT"));
    crit.setProjection(p1);

是否可以重写上面的内容,以便我可以避免在下面给出的 POJO 中使用“@OneToMany”。

POJO

@Entity
@Table(name = "OP_DOCTOR_VISIT")
@SQLDelete(sql = "UPDATE OP_DOCTOR_VISIT SET DELETED = 'DELETED' WHERE OP_VISIT_ID = ? and VERSION_UPDATES = ?")
@Where(clause = "DELETED <> 'DELETED'")
public class OP_DOCTOR_VISIT implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "OP_VISIT_ID")
private Long OP_VISIT_ID;

@OneToMany(mappedBy = "OP_VISIT_ID", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@LazyCollection(LazyCollectionOption.EXTRA)
@Fetch(FetchMode.SELECT)
private List<OP_DOCTOR_VISIT> OP_VISIT;

    public Long getOP_VISIT_ID() {
        return OP_VISIT_ID;
    }

    public void setOP_VISIT_ID(Long OP_VISIT_ID) {
        this.OP_VISIT_ID = OP_VISIT_ID;
    }

    public List<OP_DOCTOR_VISIT> getOP_VISIT() {
        return OP_VISIT;
    }

    public void setOP_VISIT(List<OP_DOCTOR_VISIT> OP_VISIT) {
        this.OP_VISIT = OP_VISIT;
    }

}

最佳答案

仅限您创建条件对象的第一行。

  1. DetachedCriteria 允许您在没有 session 的情况下创建查询。因此,您在构建查询时不需要 session 。 DetachedCriteria 与 Criteria 相同,只是您可以在没有 session 的情况下创建查询。

    DetachedCriteria detachedCriteria = DetachedCriteria.forClass(OP_DOCTOR_VISIT.class);

  2. 最后,当 session 对象可用时,您可以执行查询

    `criteria.getExecutableCriteria(session)。

关于java - 将条件转换为自连接的独立条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35424717/

相关文章:

mysql - 使用自连接优化慢速 MySQL 查询

Java SQL 结果集数据类型

java - Spring MVC 和 Hibernate 中的多对多关系以及带有附加列的复合主键

java - spring jdbctemplate和Hibernate的区别

sql - 如何使用动态联接来计算其值取决于先前计算的列?

MySQL - 正确的事件计数方法

java - Android native 库: Runtime error when trying to load JNI native library

java - 创建 View 时如何在 Liquibase 中指定列名?

Java 正则表达式 : Replace all characters with `+` except instances of a given string

mysql - Hibernate:向mysql数据库添加日期属性,它将作为前一天插入数据库