在hibernate POJO中手动计算字段

时间:2012-02-02 12:24:56

标签: hibernate spring orm

我在项目中使用Spring和Hibernate。

假设我有一个USER表,它通过一个交叉表与ROLE相关,而ROLE表又通过一个表与PERMISSION表相关联交叉表。因此,每个用户可能有多个角色,每个角色可能具有多个权限,这些权限可以在不同角色之间共享。在orm中我会有一个像这样的User类:

class User {
    // blah blah properties

    @ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinTable(name="USER_ROLE",
        joinColumns={@JoinColumn(name = "USER_ID", nullable = false, updatable = false)},
        inverseJoinColumns={@JoinColumn(name = "ROLE_ID", nullable = false, updatable = false)})
    private Set<Roles> roles;
}

现在我想要的是在User bean中包含另一个属性,其中包含用户的权限列表作为字符串(List<String> permissions)。对我来说最简单的方法是,如果可以在填充属性后立即调用User对象的某个方法。该方法将对角色执行for,然后对权限执行另一个角色,并将其添加到用户对象的权限列表中。

或许hibernate / spring可以为这个确切的情况提供一些东西?

P.S。 我尝试使用谷歌搜索,但没有成功。

1 个答案:

答案 0 :(得分:2)

我认为@PostLoad callback会帮助你解决这个问题。它允许您在加载实体后立即进行计算或修改,这样您就可以构建权限列表。