考える授業:
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=?
か::
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 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によって管理されるエンティティではありません。 'Entity'アノテーションと' Id'フィールドがありません。 'A'はエンティティか普通のJavaクラスですか? 'A 'がエンティティである場合、条件クエリ' session1.createCriteria(A.class、 "a")add(Restrictions.and(Restrictions.eq( "a.objB.x"、1)、Restrictionsを試すことができます。 list() 'またはhql' FROM A a.objB.x =:xとa.objB.y =:y ")。setParameter(" x( "a.objB.y"、1) "、2).setParameter(" y "、2).list()' –