Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 多对多还是不多对多_Hibernate_Jpa - Fatal编程技术网

Hibernate 多对多还是不多对多

Hibernate 多对多还是不多对多,hibernate,jpa,Hibernate,Jpa,实体用户定义如下: class User{ enum Role{USER, ADMIN} private Set<Role> roles; ... } 类用户{ 枚举角色{用户,管理员} 私人设定角色; ... } 到目前为止,我发现的所有实现都是将角色作为另一个实体来实现,并使用多对多来连接它们。这种实现对我来说似乎不合适,因为角色是一组预定义的数据。从数据库模式设计的角度来看,应该有一个用户表和用户角色表,其中包含两列:用户ID、外键和角色数据,这两列构成一个复合键

实体用户定义如下:

class User{

 enum Role{USER, ADMIN}

 private Set<Role> roles;
 ...
}
类用户{
枚举角色{用户,管理员}
私人设定角色;
...
}

到目前为止,我发现的所有实现都是将角色作为另一个实体来实现,并使用多对多来连接它们。这种实现对我来说似乎不合适,因为角色是一组预定义的数据。从数据库模式设计的角度来看,应该有一个用户表和用户角色表,其中包含两列:用户ID、外键和角色数据,这两列构成一个复合键。如果使用多对多实现,将有一个用户表、一个角色表和一个交叉引用表用户角色。第一种方法可以通过Hibernate/JPA实现吗

如果您需要添加另一个角色(假设为MASTER),则必须更改User_Role表列的列定义。是的,使用多对多方法,但不使用其他方法。谢谢您提供的信息。根据我的测试,这非常有效。如果您需要添加另一个角色,假设是MASTER,那么您必须更改User_Role表列的列定义。是的,使用多对多方法,但不是其他方法。谢谢您提供的信息。根据我的测试,这很有效。