0

私は3つのモデルクラスを持っています、

User.java

public class UserData {
private Integer userID;
private String userName;
private String userPassword;
//getters and setters..

および Permission クラスのような..

Permission.java

public class PermissionsData {
private Integer permissionID;
private Integer userID;
private Integer moduleID;
private boolean permissionIsReadOnly;
private boolean permissionIsModify;
private boolean permissionIsFull;
//getters and setters

amdモジュールクラスのような、

module.java

public class ModuleData {
private Integer modId;
private String modName;

データベースにいくつかのモジュールがあります。新しいユーザーを作成するときに、それらのモジュールをリストし、アクセス許可を設定するためのチェックボックスを追加しました。フォームを送信するとき、ユーザー データをユーザー テーブルに挿入し、各モジュールの権限を Permission テーブルに挿入する必要があります。

今、私はデータベースへのロールの挿入のみを実装しました..私のコントローラは..

@RequestMapping(value = "/addRole")
    public ModelAndView addNewRole()
    {
        ModelAndView mav = new ModelAndView("addNewRole");
        RoleData role = new RoleData();
        mav.getModelMap().put("roleDataObj", role);

        List<ModuleData> moduleList = moduleService.getAllModules();
        mav.getModelMap().addAttribute("ModuleList", moduleList);
        return mav;
    }

1回の送信で2つのテーブルにデータを追加するにはどうすればよいですか?? モジュールと許可の間のマッピングについても知りたいのですが、私はこの春と冬眠するのが本当に初めてです。サンプルコードを教えてください。よろしくお願いします。

4

1 に答える 1

2

マッピングでカスケードを設定した場合

@Cascade(Cascade.all)
private List<Permission> permissions;

それは次のように簡単です

public void saveNewUser(...)
{
    User user = new User();
    // fill properties
    Permission p = new Permission();
    // fill properties
    user.getPermissions().add(p);

    session.save(user);
}

更新: 上記のコードは、次のようなクラス構造を使用して可能です。重要な部分は、モジュールごとに各ユーザーが持つ権限のコレクション/マップです

public class Permission {
    private boolean IsReadOnly;
    private boolean IsModify;
    private boolean IsFull;
}

public class Module {
    private Integer id;
    private String name;
}

public class User {
    private Integer id;
    private String name;
    private String password;
    private Map<Module, Permission> permissions;
}

とマッピング

<class name="User">
  ...
  <map name="permissions" cascade="all">
    <key column="UserId"/>
    <index-many-to-many column="ModuleId" class="Module"/>
    <composite-element class="Permission">
      <property name="IsReadOnly"/>
      <property name="IsModify"/>
      <property name="IsFull"/>
    </composite-element>
  </map>
于 2012-05-25T06:01:21.640 に答える