Я пытаюсь создать 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
Получение concurrentModificationException при работе с SET ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1737926821
Anonymous
Я пытаюсь создать Set только с именами. По какой-то причине я получаю исключение java.util.ConcurrentModificationException, и это происходит, когда я вызываю post.getTags().stream().map(Tag::getName).collect(Collectors.toSet()). Я также использую Lombok для генерации геттеров и сеттеров, если это играет какую-то роль. Что может быть не так? Спасибо, что уделили время!
[b]Опубликовать модель[/b]
@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;
}
[b]Составитель сообщений[/b]
@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());
}
}
[b]PostResponseDTO[/b]
@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;
}
[b]Модель тегов[/b]
@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;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79389092/getting-concurrentmodificationexception-while-working-with-set[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия