#spring #postgresql #hibernate #jpa #spring-data-jpa
#spring #postgresql #спящий режим #jpa #spring-data-jpa
Вопрос:
Есть класс.
@Entity
@Table(name="sessions")
@Component
public class Session {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ElementCollection
private Set<String> addedWords;
}
Мой поток: получить сеанс один раз. Добавьте одно слово в addedWords
сеанс и сохраните его, повторите. Проблема в том, что когда я проверяю свою базу данных, там много дубликатов, в то же время у меня нет никаких дубликатов в классе Java. Таким Set<String> addedWords
образом, in class и this слова в базе данных не совпадают. Почему у меня такое странное поведение и как заставить вещи работать хорошо без какого-либо дублирования? Я использую PostgreSQL. Метод сохранения:
public synchronized void addWord(Session session, String word) {
session.getAddedWords().add(word);
sessionRepository.save(session);
}
Здесь spring config
spring:
jpa:
show-sql: true
hibernate:
ddl-auto: update
Комментарии:
1. Вы имеете в виду, что когда вы пытаетесь добавить одно и то же слово к нескольким
Session
объектам, а затем сохранить их, вы получаете дублированные записи word в DB, верно?2. @SternK нет, я добавляю в набор только разные слова, но каким-то образом они дублируются в базе данных, например, в наборе у меня есть [a, b, c, d], в базе данных есть [a, a, b, b, c, c, d] например. Это происходит после 1 сохранения, когда оно сохраняется в первый раз, дубликатов нет, но затем они появляются … (при сохранении 2 )
3. Не могли бы вы показать, как вы ее сохраняете?
4. Пожалуйста, создайте и опубликуйте полную демонстрацию, выполнив все добавления и сохранения, чтобы воспроизвести эту проблему.