首页 > 解决方案 > 休眠批处理不适用于 EmbeddedId

问题描述

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

@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 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);

由于复杂的主键(@EmbeddedId),在这种情况下批处理不起作用是真的吗?

标签: hibernatespring-data-jpabatch-processinghibernate-batch-updates

解决方案


推荐阅读