Hibernate批处理不';EmbeddedId不起作用

Hibernate批处理不';EmbeddedId不起作用,hibernate,spring-data-jpa,batch-processing,hibernate-batch-updates,Hibernate,Spring Data Jpa,Batch Processing,Hibernate Batch Updates,我加载用户朋友(来自外部系统),需要保存他们,还需要保存关系 @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_id_generator") @SequenceGenerator(name = "user_id_generator", sequenceName = "s_user_id", allocationSize

我加载用户朋友(来自外部系统),需要保存他们,还需要保存关系

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_id_generator")
    @SequenceGenerator(name = "user_id_generator", sequenceName = "s_user_id", allocationSize = 100)
    private Long id;
    private String firstName;
    private String lastName;
}

@Entity
public class Friends {

    public Friends(Long userId, Long friendId) {
        this.id = new FriendsId(userId, friendId);
    }

    @EmbeddedId
    FriendsId id;

    @Embeddable
    @EqualsAndHashCode
    public static class FriendsId implements Serializable {
        private Long userId;
        private Long friendId;

        public FriendsId(Long userId, Long friendId) {
            this.userId = userId;
            this.friendId = friendId;
        }
    }
}
User=。。。
列出朋友=加载用户();
userRepository.saveAll(朋友);
列表关系=新的ArrayList();
用于(用户朋友:朋友){
add(user.getId(),friend.getId());
add(friend.getId(),user.getId());
}
friendsRepository.saveAll(关系);

在这种情况下,由于主键复杂(@EmbeddedId),批处理是否真的无法工作?

否。你为什么这么认为?我也有同样的问题,你找到解决方案了吗?@fsakiyama,我去掉了EmbeddedId,使用了合成数值
@Id
,生成值=序列
User user = ...
List<User> friends = loadUsers();
userRepository.saveAll(friends);
List<Friends> relations = new ArrayList<>();
for (User friend : friends) {
    relations.add(user.getId(), friend.getId());
    relations.add(friend.getId(), user.getId());
}
friendsRepository.saveAll(relations);