我一直在尝试使用cayenne进行连接查询,但是我对使用表达式而感到困惑。 在sql中它将是这样的:
SELECT *
FROM usuarios, rol, user_rol
WHERE usuarios.cod_usuario = user_rol.cod_usuario
AND user_rol.cod_rol = rol.cod_rol
这将是基本的。 提前致谢
答案 0 :(得分:0)
答案就像使用the other question一样,就是使用关系。映射Usuarios / UserRol和UserRol / Rol之间的关系后,您可以通过调用其方法来遍历用户对象的关系:
Usuarios u = ..
for(UserRol ur : u.getUserRols()) {
Rol r = ur.getRol();
// now do something with it
}
或者查找与该用户匹配的查询的Rols:
SelectQuery query = new SelectQuery(Rol.class);
query.andQualifier(ExpressionFactory.matchExp("userRol.user", u);
List<Rol> roles = context.performQuery(query);
应该调整'ExpressionFactory.matchExp'的路径参数(即“userRol.user”字符串)以匹配从Rol实体开始的实际关系名称(因为Rol是查询的根),转到UserRol,并且从那到Usuarios。