0

夜!

承認目的でユーザーエンティティをグループエンティティに関連付ける結合テーブル (ユーザーグループ) を含む DB 構造があります。これは多対多の関係です (Users が所有者です)。他の投稿で BalusC が親切に提供してくれたヒントとヒントに従って、Omnifaces フレームワークが提供する SelectItemsConverter カスタム コンバーターを使用しています。次に、これらを Users エンティティが保持するグループに追加します。現状では、コードは Groups エンティティを最終結果のある に変換しようとします! 少し掘り下げた後、私は' ビューへの参照を何らかの方法でバインドし、フォームの送信時に Groups add メソッドへの参照を渡す必要があるかどうか疑問に思っていますが、これは少しぎこちなく、私の理論を確認するものは何も見つかりません。ポインターは誰ですか?

ユーザー エンティティ:

@Entity
@Table(name = "Users")
@XmlRootElement
...
public class Users implements Serializable {
...
    @JoinTable(name = "User_Groups", joinColumns = {
        @JoinColumn(name = "User_ID", referencedColumnName = "User_ID")}, inverseJoinColumns = {
        @JoinColumn(name = "Group_ID", referencedColumnName = "Group_ID")})
    @ManyToMany
    private Collection<Groups> groupsCollection;
 ...

グループ エンティティ:

@Entity
@Table(name = "Groups")
...
public class Groups implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "Group_ID")
    private Integer groupID;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "Group_Name")
    private String groupName;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 200)
    @Column(name = "Group_Desc")
    private String groupDesc;
    @ManyToMany(mappedBy = "groupsCollection")
    private Collection<Users> usersCollection;
...

ユーザーの作成 JSF ページのコード フラグメント:

...
<h:outputLabel value="#{bundle.CreateUsersLabel_groups}" for="groupsCollection" />
<h:selectOneMenu id="groupsCollection" value="#{usersController.selected.groupsCollection}" title="#{bundle.CreateUsersTitle_groups}" converter="omnifaces.SelectItemsConverter">
  <f:selectItems value="#{groupsController.itemsAvailableSelectOne}" />
</h:selectOneMenu>
...
4

1 に答える 1

0

必要なのは、ah:selectManyCheckbox、h:selectManyListbox、または h:selectManyMenu など、多くのグループを同時に選択してユーザーに関連付けることができるものだと思います。これを試して:

<h:outputLabel value="#{bundle.CreateUsersLabel_groups}" for="groupsCollection" />
   <h:selectManyMenu id="groupsCollection" 
        value="#{usersController.selected.groupsCollection}" 
        title="#{bundle.CreateUsersTitle_groups}" converter="omnifaces.SelectItemsConverter">
   <f:selectItems value="#{groupsController.itemsAvailableSelectOne}" />
</h:selectManyMenu>
于 2013-10-11T22:10:37.260 に答える