账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    spring data jpa怎么解决2个表的多对多关系
    53
    0
    存在一张主表A,存在一张关系表B,其中关系表B有3个字段 supper_id sub_id 还有一个自增的主链id,说明一下,B表里的父子id都是A表里的主建id。假设A表有一条数据,且为根节点,要在这个节点下新增一个子节点,用springdata jpa里的注解@ManytoMany怎么实现子节点数据的新增,这就是A表和B表的数据插入怎么实现?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • []飲天下£烈酒_ 普通会员 1楼

      在Spring Data JPA中,可以通过以下步骤解决2个表的多对多关系:

      1. 在实体类中定义一对多关系,使用@ManyToMany注解:

      ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

      @Column(name = "name")
      private String name;
      
      @ManyToMany(mappedBy = "users")
      private List<UserRole> roles;
      

      } ```

      1. 在Repository接口中实现多对多关系:

      java @Repository public interface UserRepository extends JpaRepository<User, Long> { List<UserRole> findByRoles(List<User> users); }

      1. 在Service类中处理多对多关系:

      ```java @Service public class UserService { private UserRepository userRepository;

      @Autowired
      public UserService(UserRepository userRepository) {
          this.userRepository = userRepository;
      }
      
      public User getUserById(Long id) {
          return userRepository.findById(id).orElse(null);
      }
      
      public List<UserRole> getUserRoles(User user) {
          return userRepository.findByUsers(user).stream()
                  .map(userRole -> new UserRole(user, userRole.getRole()))
                  .collect(Collectors.toList());
      }
      

      } ```

      以上就是在Spring Data JPA中解决2个表的多对多关系的基本步骤。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部