Cayenne JOIN表达

时间:2013-11-24 21:06:05

标签: postgresql join inner-join apache-cayenne

我一直在尝试使用cayenne进行连接查询,但是我对使用表达式而感到困惑。 在sql中它将是这样的:

SELECT *
FROM usuarios, rol, user_rol
WHERE usuarios.cod_usuario = user_rol.cod_usuario
AND user_rol.cod_rol = rol.cod_rol

这将是基本的。 提前致谢

1 个答案:

答案 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。