鑑於類:
public class RandomEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Embedded
private EmbeddableEntity embedded;
}
和
@Embeddable
public class EmbeddableEntity {
private Long valueA;
private Long valueB;
}
您可以查詢它想:
session.createQuery("select a from RandomEntity a where a.embedded.valueA=:value").setParameter("value", 1L).list();
Hibernate: select randomenti0_.id as id1_2_, randomenti0_.valueA as valueA2_2_, randomenti0_.valueB as valueB3_2_ from RandomEntity randomenti0_ where randomenti0_.valueA=?
或:
session.createQuery("select a from RandomEntity a where a.embedded.valueA in (:value)").setParameterList("value", Arrays.asList(1L, 2L)).list();
Hibernate: select randomenti0_.id as id1_2_, randomenti0_.valueA as valueA2_2_, randomenti0_.valueB as valueB3_2_ from RandomEntity randomenti0_ where randomenti0_.valueA in (?)
是您問題,如何查詢所有具有相同值'x'和'y'的'A'對象? –
它看起來不像'A'是由Hibernate管理的實體。它缺少「實體」註釋和「Id」字段。 'A'是一個實體還是普通的java類?如果'A'是一個實體,則可以嘗試標準查詢'session1.createCriteria(A.class,「a」).add(Restrictions.and(Restrictions.eq(「a.objB.x」,1),Restrictions)。 eq(「a.objB.y」,1)))。list()'或hql'FROM A a where a.objB.x =:x and a.objB.y =:y「)。setParameter(」x 「,2).setParameter(」y「,2).list()' –