就我而言,我有一个 SQL 查询,如下所示:
select * from event_instance where (object_id, object_type) in
(<LIST OF TUPLES RETRIEVED FROM SUBQUERY>);
我想将其映射到 Hibernate 实体上,但此查询有问题。我的映射如下所示:
@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 对象,但不知道如何准确地为其构造查询。请帮忙
最佳答案
您可以不使用标准 SQL 或使用条件来做到这一点;您必须分成两个不同的限制或使用 Session.SQLQuery()
如果您想使用特定的 RDBMS(请参阅 SQL WHERE.. IN clause multiple columns 获取说明)
关于java - 使用嵌入对象(元组)进行 Hibernate Criteria 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18447740/