微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使可嵌入类的 id 与 spring 数据 jpa 一起唯一,以便不能输入重复项

如何解决如何使可嵌入类的 id 与 spring 数据 jpa 一起唯一,以便不能输入重复项

我有 3 个表 UserBookReviewReview一个 EmbeddedId,我想让它独一无二,这样就不会出现重复评论一本书的用户。提前致谢。

@Entity
public class Review {
    
   @EmbeddedId
   private ReviewCompositKey id;
   
   // ....
}


@Embeddable
public class ReviewCompositKey implements Serializable {
    
   private static final long serialVersionUID = 1L;
    
   private Long userId;
   private Long bookId;
   //  ....
}

@Override
public void run(String... args) throws Exception {
    
   User user = new User("John","Doe","john@example.com","testpass","admin",true);
   user = userRepository.save(user);
      
   List<String> authors = Arrays.asList("Blake","Jane");
   Book book = new Book("Just A Trial","123456789abc","1940",authors);
   book = bookRepository.save(book);
      
   Review review = new Review(new ReviewCompositeKey(user.getId(),book.getId()),(byte)4,"First Title");
   review = reviewRepository.save(review);
    
   Review review1 = new Review(new ReviewCompositeKey(user.getId(),"First Title");
   review1 = reviewRepository.save(review1);
       
}

解决方法

代码很好,在遍历 Reviews 表后,我只有一个相同评论的实例,它没有复制它们。我感到困惑的原因是我期望它在用户尝试复制评论时抛出异常。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。