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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JPA save 插入数据如何忽略唯一索引, 返回插入行数?
    47
    0
    数据库存在唯一索引时, 插入重复数据会报错。希望的效果是save插入一行数据不报错,如果存在重复返回0, 不存在并成功写入返回1请问如何做到呢? 除了是用try
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 卖萌是本性 普通会员 1楼

      在JPA中,可以通过以下步骤来实现插入数据并忽略唯一索引:

      1. 在你的实体类中,添加一个主键属性。

      ```java public class User {

      private Long id;
      private String name;
      
      // getters and setters
      

      } ```

      1. 在你的JPA类中,添加一个save()方法,该方法将被调用。

      ```java public class UserRepository {

      @Autowired
      private SessionFactory sessionFactory;
      
      public User save(User user) {
          Transaction transaction = sessionFactory.currentTransaction();
          transaction.begin();
          User existingUser = getUserById(user.getId());
          if (existingUser != null) {
              transaction.commit();
              return existingUser;
          }
          user.setId(id);
          sessionFactory.save(user);
          transaction.commit();
          return user;
      }
      
      private User getUserById(Long id) {
          // your query logic here
      }
      

      } ```

      在这个例子中,当你调用save()方法时,JPA会首先检查用户是否已经存在于数据库中。如果存在,那么JPA将不会提交事务。如果不存在,那么JPA将尝试插入新的用户。

      1. 在你的业务逻辑中,你需要实现你的查询逻辑。在这个例子中,你只需要一个查询,该查询返回用户ID。

      java public User getUserById(Long id) { // your query logic here }

      这样,当用户被插入时,JPA将忽略所有的唯一索引。但是,如果你在查询时使用了唯一索引,那么JPA将只返回第一个匹配的行。

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