我的班级有以下映射:
@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”将由内部联接定义...... 由于标准使用此标识符而没有声明......
答案 0 :(得分:0)
B
必须使用@Embeddable
; B
是否包含getC
和setC
方法; 如果错误仍然存在,请发布完整代码。 : - )