问题: 权限表中的role_id保存结果为null, 下面是详细描述:
涉及三个实体类:
/**
* 权限表
* @author Imxood
* 2016年2月21日
*/
@Entity
@Table(name = "t_permission")
public class Permission implements Serializable {
private static final long serialVersionUID = 2718494404287816693L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
@ManyToOne
@JoinColumn(name = "role_id")
private Role role;
public Permission() {
}
//getter,setter...
}
/**
* 角色表
* @author Imxood
* 2016年2月21日
*/
@Entity
@Table(name = "t_role")
public class Role implements Serializable {
private static final long serialVersionUID = 7042556500854817893L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "t_user_role", joinColumns = { @JoinColumn(name = "role_id") }, inverseJoinColumns = { @JoinColumn(name = "user_id") })
private List<User> user;
@OneToMany(mappedBy = "role", // 指定了由多的那一方来维护关联关系,mappedBy指的是多的一方对1的这一方的依赖的属性,如果没有指定由谁来维护关联关系,则系统会给我们创建一张中间表
fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Permission> permissions;
public Role() {
}
//getter,setter...
}
/**
* 用户表
* @author Imxood
* 2016年2月21日
*/
@Entity
@Table(name = "t_user")
public class User implements Serializable {
private static final long serialVersionUID = -7154917770769302643L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String username;
private String password;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)// mappedBy指定了由多的那一方来维护关联关系即外键建在多方,如果没有指定由谁来维护关联关系,则系统会给我们创建一张中间表
@JoinTable(name = "t_user_role", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") })
private List<Role> roles;
public User() {
}
//getter,setter...
}
我的操作是这样的:
//数据初始化, 添加两条用户
//用户1:
List<Permission> permissions = new ArrayList<> ();
permissions.add(new Permission("user:*"));
Role role = new Role("admin", permissions);
List<Role> roles = new ArrayList<> ();
roles.add(role);
User user = new User("imx", "imx", roles);
user = userServer.save(user);
//用户2:
permissions = new ArrayList<> ();
permissions.add(new Permission("student:*"));
role = new Role("admin", permissions);
roles = new ArrayList<> ();
roles.add(role);
user = new User("imxood", "imxood", roles);
user = userServer.save(user);
运行的结果是:
预期的效果是role_id是有值的, 红圈的地方肯定不对,请教大家看看,如何使有值?~~