0

我有三张桌子。

LEFT ---------|<- LEFT_RIGHT ->|--------- RIGHT
@Entity
class Left {
    // no collection mapping for LeftRight
}

@Entity
class Right {
    // no collection mapping for LeftRight
}

@Entity
class LeftRight {

    @JoinColumn(name="LEFT_ID")
    @ManyToOne
    private Left left;

    @JoinColumn(name="RIGHT_ID")
    @ManyToOne
    private Right right;
}

请注意,LeftRight没有对LeftRights 的任何引用。

Criteria-API 有什么方法可以Left在加入时进行选择LeftRight吗?

4

2 回答 2

1

您可以创建条件查询LeftRight并使用投影来检索left属性:

session.createCriteria(LeftRight.class)
    // Add whatever restrictions on Left properties
    .createCriteria("left")
    .add(Restrictions.like("name", "%something%"))
    // Use projection to retrieve the left property
    .setProjection(Projections.property("left"));
于 2012-09-19T10:48:46.227 回答
0

是的,只需使用一个选择。

CriteriaQuery cq = cb.createQuery();
Root r = cq.from(LeftRight.class);
cq.select(r.get("left"));
cq.where(...);
Query query = em.createQuery(cq);

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/Criteria#CriteriaQuery

于 2012-09-19T13:48:58.850 回答