Я прошел этот блог-урок и успешно получил его на работу:
http://jugojava.blogspot.com/2011/02/jdbc-security-realm-with-glassfish-and.html
Я назвал две мои сущности Group
и User
. Они имеют двунаправленное отношение «многие ко многим».
Теперь причина, по которой я сделал это, как в блоге, заключается в том, что я делаю страницу администратора, на которой я хочу иметь возможность добавлять новых пользователей. Я также предоставляю пользователям возможность самостоятельно регистрироваться, и они будут иметь роль user
.
@Entity
public class Group implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String groupName;
@ManyToMany
@JoinTable(joinColumns = {@JoinColumn(name="group_id")}, inverseJoinColumns = {@JoinColumn(name="user_id")})
private List<User> users;
....
}
и
@Entity
@Table(name = "app_user")
public class User implements Serializable {
public static final String ALL = "User.all";
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
private Integer age;
private String username;
private String email;
private String password;
@ManyToMany(mappedBy = "users")
private List<Group> groups;
....
}
У меня вопрос, как я мог бы назначить группу user
пользователю, когда он регистрируется, без того, чтобы я выбирал группы из списка в представлении?
Это то, что я сделал в коде приложения, но он связывает код с идентификатором группы в базе данных, есть ли лучшие способы?
Метод из EJB
public void persistAsUser(User user) {
Group group = new Group(2L, "user");
user.addGroup(group);
userRepository.persist(user);
}