Пакетный режим гибернации не работает для EmbeddedId - PullRequest
0 голосов
/ 14 октября 2019

Я загружаю друзей пользователя (из внешней системы) и мне нужно сохранить их, а также сохранить отношения.

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

...