我有一个USER(id,role_id,first,last)对象,它包含一个ROLE(id,role_name)对象。 ROLE是在DB中预定义的,数据看起来像:0,user; 1,管理员; 3 superadmin ...持久化(保存)USER并根据role_name将role_id添加到用户的最佳方法是什么?创建用户时,我知道role_name,但不知道角色ID。我是否需要首先查询角色ID然后将其添加到USER对象?我确信在Spring Data JPA中有更聪明的方法。请帮忙,谢谢。
答案 0 :(得分:2)
您确实配置了存储库,对吧?
假设您有RoleRepository extends JpaRepository<Role, Long>
接口,您可以定义方法Role findByRoleName(String roleName)
并获取Role
对象,将其附加到新创建的User
对象,并通过用户存储库保留该用户。
当然,您必须在User
课程中建立有效的关系,让我们说@OneToMany(cascade=ALL, mappedBy="user") private Set<Role> roles
。
cascade
注释属性当然是可配置的。
如果您在应用程序启动时在内存中加载所有角色,那么情况会更好,因为您已将它们预定义,将它们存储到Map
并在需要时从地图中获取。