Реализация ON DUPLICATE KEY UPDATE в spring data
Я новичок в Java, помогите пожалуйста решить вопрос с ON DUPLICATE KEY UPDATE. Вот моя сущность:
@Entity
@SQLInsert(sql = "INSERT INTO lemma(id, lemma, frequency) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE frequency = frequency + 1" )
public class Lemma {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@NotNull
@Column(unique = true)
private String lemma;
@NotNull
private int frequency;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLemma() {
return lemma;
}
public void setLemma(String lemma) {
this.lemma = lemma;
}
public int getFrequency() {
return frequency;
}
public void setFrequency(int frequency) {
this.frequency = frequency;
}
}
Вот репозиторий:
@Repository
public interface LemmaRepository extends JpaRepository<Lemma, Integer> {
}
Далее я создаю 4 объекта и сохраню в бд:
Lemma l = new Lemma();
l.setLemma("юра");
l.setFrequency(1);
lemmaRepository.save(l);
Lemma l2 = new Lemma();
l2.setLemma("витя");
l2.setFrequency(1);
Lemma l3 = new Lemma();
l3.setLemma("витя");
l3.setFrequency(1);
Lemma l4 = new Lemma();
l4.setLemma("сергей");
l4.setFrequency(1);
lemmaRepository.save(l4);
lemmaRepository.save(l);
lemmaRepository.save(l3);
lemmaRepository.save(l2);
В результате я рассчитываю получить в БД три записи:
сергей со значением frequency = 1
юра со значением frequency = 1
витя со значением frequency = 2.
Но получаю всего 1 запись юра со значением frequency = 4.
Что я делаю не так?
И на всякий случай прикреплю файл конфигурации:
spring.datasource.url=jdbc:mysql://localhost:3306/search_engine
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=create-drop