1
我在我的项目中使用了Spring和Hibernate。在休眠状态下手动计算的字段POJO
假设我有一个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;
}
现在我想要的是在包含用户的字符串(List<String> permissions
)的权限列表中User
豆另一个属性。对我来说最简单的方法就是在属性填充后,可以调用某个User对象的方法。该方法将在角色上执行for
,然后在权限上执行另一个角色,并将其添加到用户对象中的权限列表中。
也许冬眠/春天提供了这个确切的情况?
P.S. 我尝试了谷歌搜索,但不成功。
所以,只需要添加一个方法到'用户',这需要这样做。 – skaffman 2012-02-02 12:28:58
我已经这样做了,但是对于我来说这并不够整齐:)我在getter方法中检查权限列表是否为空,如果没有,我就填充它。我认为应该有一个更清洁的解决方案。 此外,我正在使用一个特殊的库,它将hibernate托管的bean转换为可通过网络传输的可序列化bean。这个lib可能会或可能不会使用getter方法来访问bean的私有属性。 – 2012-02-02 12:34:23
@PostLoad生命周期监听器是你想要的吗? http://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/listeners.html – 2012-02-02 13:22:04