Получение concurrentModificationException при работе с SETJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Получение concurrentModificationException при работе с SET

Сообщение Anonymous »

Я пытаюсь создать Set только с именами. По какой-то причине я получаю исключение java.util.ConcurrentModificationException, и это происходит, когда я вызываю post.getTags().stream().map(Tag::getName).collect(Collectors.toSet()). Я также использую Lombok для генерации геттеров и сеттеров, если это играет какую-то роль. Что может быть не так? Спасибо, что уделили время!
Опубликовать модель
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "posts")
public class Post {
@Id
@GeneratedValue(generator = "UUID")
@Column(updatable = false, nullable = false)
private UUID id;

@Column(nullable = false, length = 255)
private String title;

@Column(nullable = false, columnDefinition = "TEXT")
private String content;

@ManyToOne
@JoinColumn(name = "author_id", nullable = false)
private User author;

@ManyToOne
@JoinColumn(name = "category_id")
private Category category;

@ManyToMany
@JoinTable(
name = "post_tags",
joinColumns = @JoinColumn(name = "post_id"),
inverseJoinColumns = @JoinColumn(name = "tag_id")
)
private Set tags;

@OneToMany(mappedBy = "post", cascade = CascadeType.ALL)
private List comments;

@OneToMany(mappedBy = "post", cascade = CascadeType.ALL)
private List
views;

@Column(nullable = false, updatable = false)
@CreationTimestamp
private Date createdAt;

@Column(nullable = false)
@UpdateTimestamp
private Date updatedAt;
}


Составитель сообщений
@Component
@RequiredArgsConstructor
public class PostMapper {
private final CommentMapper commentMapper;

public PostResponseDTO toResponsePostDto(Post post) {
return new PostResponseDTO(
post.getId(),
post.getTitle(),
post.getContent(),
post.getAuthor().getId(),
post.getAuthor().getUsername(),
post.getCategory(),
post.getTags().stream().map(Tag::getName).collect(Collectors.toSet()),
post.getComments().stream().map(comment -> commentMapper.toResponseCommentDto(comment)).toList(),
post.getViews().size(),
post.getCreatedAt(),
post.getUpdatedAt());
}
}

PostResponseDTO
@Data
@AllArgsConstructor
public class PostResponseDTO {
private UUID id;
private String title;
private String content;
private UUID authorId;
private String authorUsername;
private Category category;
private Set tags;
private List comments;
private long viewsCount;
private Date createdAt;
private Date updatedAt;
}

Модель тегов
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "tags")
public class Tag {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private UUID id;

@Column(nullable = false, unique = true, length = 100)
private String name;

@ManyToMany(mappedBy = "tags")
private Set posts;
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... g-with-set
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»