2017-04-16 69 views
0

我有我的課的以下映射:Hibernate的標準與EmbeddedId不會產生正確的SQL查詢

@Entity 
Class A{ 
    @EmbeddedId 
    B id; 
    String notImportant; 
} 

@Entity 
Class B { 
    C c; 
} 

Class C { 
String name; 
} 

當我使用如下標準:

Criteria criteria = getCurrentSession().createCriteria(A.class); 
criteria.createAlias("id.c", "c"); 
criteria.add(Restrictions.eq("c.name", "Whatever")); 
criteria.list(); 

Hibernate: 
    /* criteria query */ select 
     this_.notImportant as DOAT2_77_0_ 
    from 
     A this_ 
    where 
     c.name=? 

2017-04-15 21:03:02,211 ERROR [org.hibernate.util.JDBCExceptionReporter] - ORA-00904: "c"."name": identificador inválido 

所以我明白,確定的「C」將由I定義nner加入... 作爲標準使用標識不聲明...

回答

0
  • B必須@Embeddable來註解;
  • 還檢查B類是否有getCsetC方法;

如果錯誤仍然存​​在,請發佈您的完整代碼。 :-)