在我的情况下,我有一个SQL查询,如下所示:
select * from event_instance where (object_id, object_type) in
(<LIST OF TUPLES RETRIEVED FROM SUBQUERY>);
我想在Hibernate Entities上映射它,我对此查询有疑问。我的映射看起来像这样:
@Entity
@Table(name="event_instance")
public class AuditEvent {
<OTHER_FIELDS>
@Column( name = "object_type", nullable = false)
private String objectType;
@Column( name ="object_id" , nullable = false)
private Integer objectId;
}
和第二个实体:
@Entity
@Table(schema = "els" ,name = "acg_objects")
public class AcgObject implements Serializable{
@Id
@Column(name = "acg_id")
private String acgId;
@Id
@Column(name="object_type")
private String objectType;
@Id
@Column(name="object_id")
private Integer objectId;
<OTHER FIELDS>
}
我已经运行了获取AcgObjects的查询,而对于我的DAO,我只获得了List,我想要做的就是使用以下条件查询一个标题:
crit.add(Restrictions.in("objectType,objectId",<List of tuples>);
有可能吗?我试图使用@Embedded对象,但不知道如何为它构造一个查询。请帮忙
答案 0 :(得分:0)
您不能在标准SQL中使用,也不能使用标准;如果要使用特定的RDBMS,则必须分为两个不同的限制或使用Session.SQLQuery()
(查看SQL WHERE.. IN clause multiple columns以获得解释)