spring 多对多表的保存

user和authority两表通过中间表user_authority来实现关联,user_authority表如下:

在spring的domain的关联代码如下:

/**
  */
 @ManyToMany(fetch = FetchType.LAZY)
 @JoinTable(catalog = "xmgl", name = "user_authority", joinColumns = { @JoinColumn(name = "User_ID", referencedColumnName = "ID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "Authority_ID", referencedColumnName = "ID", nullable = false, updatable = false) })
 @XmlElement(name = "", namespace = "")
 java.util.Set<net.gvsun.domain.Authority> authorities;

在jsp页面怎么将权限传到后来呢?通过先将数据保存到user中的另一个字符串的对象,如下所示:

<td class="label" valign="top">
          <fmt:message key="authority.cname.title"/>:
         </td>
    <c:forEach items="${authorities}" var="current" varStatus="i">
        <td >
                      <form:checkbox path="userName" value="${current.id}" />
      ${current.CName}
     </td>
    </c:forEach>

我先将数据保存到user的userName中,然后通过userName传到后台的service层,而service层实现保存的方法如下:

/*
  * 保存新增的用户权限
  */
 public void saveAuthority(User user)
 {
  String str = user.getUserName();
        String[] arrayStr = str.split(",");
        int id=user.getId();
        User user2=userDAO.findUserByPrimaryKey(id);
        Set<Authority> authorities=authorityDAO.findAllAuthoritys();
        Set<Authority> sets=user.getAuthorities();
        for(int i=0;i<arrayStr.length;i++){
             String auth=arrayStr[i];
         int authorityId=Integer.parseInt(auth);
         for(Authority authority:authorities)
         {
          if(authority.getId()==authorityId)
          {
           sets.add(authority);
          }
         }
         user2.setAuthorities(sets);
         userDAO.store(user2);
         userDAO.flush();
        }

 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Data JPA 中,多关联插入可以通过实体类之间的关联来实现。以下是一个简单的示例: 假设我们有两个实体类 `User` 和 `Order`,它们之间是多对一的关系,一个用户可以有多个订单。 ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @OneToMany(mappedBy = "user") private List<Order> orders; // getters and setters } @Entity @Table(name = "orders") public class Order { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String productName; @ManyToOne @JoinColumn(name = "user_id") private User user; // getters and setters } ``` 在 `User` 类中,我们使用 `@OneToMany` 注解来定义与 `Order` 实体类的一对多关系,`mappedBy` 属性指定了 `Order` 实体类中与 `User` 实体类的关联属性名为 `user`。 在 `Order` 类中,我们使用 `@ManyToOne` 注解来定义与 `User` 实体类的多对一关系,`@JoinColumn` 注解用于指定与 `User` 实体类的关联属性名为 `user_id`。 在插入数据时,我们需要先创建一个 `User` 实体类,并为其添加一个或多个 `Order` 实体类,然后将 `User` 实体类保存到数据库中。以下是一个示例代码: ```java User user = new User(); user.setName("张三"); Order order1 = new Order(); order1.setProductName("商品1"); order1.setUser(user); Order order2 = new Order(); order2.setProductName("商品2"); order2.setUser(user); List<Order> orders = new ArrayList<>(); orders.add(order1); orders.add(order2); user.setOrders(orders); userRepository.save(user); ``` 在上述代码中,我们创建了一个 `User` 实体类,为其添加了两个 `Order` 实体类,并将 `Order` 实体类的 `user` 属性设置为 `User` 实体类。然后,我们将 `Order` 实体类添加到 `List` 中,将 `List` 设置为 `User` 实体类的 `orders` 属性,并将 `User` 实体类保存到数据库中。 当我们保存 `User` 实体类时,JPA 会自动将 `Order` 实体类也保存到数据库中,因为 `Order` 实体类与 `User` 实体类有关联关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值