2016-03-25 34 views
0

I satırlar z önemli değildir (B sınıfı aynı x ve y içerecek şekilde, I, veri tabanını sorgulamak üzere isteyen Şimdi Hazırda bekletilen nesneyi Hazırda bekletme nesnesinde nasıl sorgulanır?

class A{ 
@Embedded 
private B objB; 
} 

@Embeddable 
class B{ 
Integer x; 
Integer y; 
float z; 
} 

I Set OBJS A sınıfı bir grup; B,

sınıfları A var Bu durumda karşılaştırma) seçilmelidir, bunu nasıl başarabilirim?

SQL'de "In" gibi bir şey var, ancak gömülü nesneleri karşılaştırdığımdan beri nasıl yapmalıyım? Çok teşekkürler!!

+0

mi senin soru, x 've' y' aynı değere sahip tüm A 'nesnelerini sorgulamak nasıl? –

+0

“A”, hazırda bekletme tarafından yönetilen bir varlık gibi görünmüyor. "Varlık" açıklaması ve "Kimlik" alanı eksik. Bir varlık mı yoksa düz bir java sınıfı mı? "A" bir varlık ise, "session1.createCriteria (A.class," a ") kriterlerini sorgulayabilirsiniz. (Restrictions.and (Restrictions.eq) (" a.objB.x ", 1), Restrictions. eq ("a.objB.y", 1))) list() 'veya hql' FROM A a'dan a.objB.x =: x ve a.objB.y =: y "). setParameter (" x "). ", 2) .setParameter (" y ", 2) .list()' –

cevap

1

Verilen sınıfları:

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=? 

ya:

public class RandomEntity { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id; 
    @Embedded 
    private EmbeddableEntity embedded; 
} 

ve

@Embeddable 
public class EmbeddableEntity { 
    private Long valueA; 
    private Long valueB; 
} 

Sen gibi sorgulayabilir

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 (?)