将标准转换为自我加入的分离标准

时间:2016-02-16 05:47:52

标签: java hibernate self-join detachedcriteria

我想知道我是否可以将此标准转换为独立标准。我没有正确理解分离标准。可以帮助一些人。

@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;
    }

}

是否可以重写上述内容,以便我可以避免使用&#34; @ OneToMany&#34;在下面给出的POJO中。

POJO

@events.to_a

2 个答案:

答案 0 :(得分:0)

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

  1. DetachedCriteria允许您创建没有会话的查询。因此,在构建查询时不需要会话。 DetachedCriteria与条件相同,但您可以在没有会话的情况下创建查询。

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

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

    `criteria .getExecutableCriteria(session)。

答案 1 :(得分:0)

DetachedCriteria crit = DetachedCriteria.forClass(OP_DOCTOR_VISIT.class,“OPDV1”);

分离的条件允许您创建查询不带会话。然后,您可以在任意会话中执行搜索。

事实上,当使用另一个或新的会话(无缓存,并创建会话)时,您应该仔细考虑使用分离标准。

它们对于创建一些连接条件,子选择以及在当前会话外查询最有用。 另一个常见用途是代码重用。

如果您使用的是Spring并选择使用HibernateTemplate,则它不提供createCriteria()方法。 您只能找到** DetachedCriteria。