保存(追加)した後、ロールのコレクションがメンバーのプロパティに入力されない理由を理解する必要があります。UserとRoleの2つのテーブルと、結合テーブルUserRoleがあります。
public class User implements Serializable {
private int id;
@NotBlank(message = "{User.userName.notBlank}")
@AlphaNumeric(message = "{User.userName.alphaNumeric}")
private String name;
@NotBlank(message = "{User.password.notBlank}")
@AlphaNumeric(message = "{User.password.alphaNumeric}")
private String password;
private boolean enabled;
private boolean deleteSafe;
@NotEmpty(message="{User.roles.notEmpty}")
private Set<Role> roles; <-- this is my problem
そしてこれが私のHibernateXMLマッピングです
<class name="User">
<id name="id">
<generator class="identity" />
</id>
<property name="name"></property>
<property name="password"></property>
<set name="roles" table="UserRoles" lazy="false">
<key column="userId"></key>
<many-to-many column="roleId" class="Role"></many-to-many>
</set>
</class>
そして、これが単純なロールクラスです
public class Role implements Serializable {
private int id;
private String authority;
private String name;
私のUserRoleテーブルは、UserのIDにマップするuserIdとRoleのIDにマップするroleIdの2つの列のみで構成されています。
名前、パスワード、およびロールのセットを含むUserオブジェクトを渡します。このリストの各ロールには、IDのみが入力されています。UserRoleテーブルは適切に保存されますが、保存後、UserオブジェクトのSetに権限と名前の属性が入力されるようにしたいと思います。
これらのプロパティは、同じマッピングを使用する通常の「get」ユーザーに入力されます。「保存」を実行した後も同じように実行されることを期待していました。