У меня есть объектный класс Alert, когда я создаю новый ALert и сохраняю его, он заменяет все строки соответствующими параметрами, а чтение и приоритет могут дублироваться в объекте Alert.Ниже приведен код для Alert.class.В чем проблема?
package com.github.entity;
import javax.persistence.*;
import java.util.UUID;
@Entity
public class Alert {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "serial")
private int u_id;
@Embedded
@ManyToOne(targetEntity = Reading.class)
@JoinColumn(name = "vin")
private Reading reading;
private String priority;
private UUID uuid;
public Reading getReading() {
return reading;
}
public void setReading(Reading reading) {
this.reading = reading;
}
public UUID getUuid() {
return uuid;
}
public void setUuid(UUID uuid) {
this.uuid = uuid;
}
public String getPriority() {
return priority;
}
public void setPriority(String priority) {
this.priority = priority;
}
}
Я сохраняю оповещение, как показано ниже:
Alert alert = new Alert();
alert.setUuid(uuid);
alert.setReading(reading);
if (alert.getPriority().equals("High") || alert.getPriority().equals("Low") || alert.getPriority().equals("Medium"))
alertRepository.save(alert);
Обновлены сведения 1:
- Сначала я вставляю запись в таблицу оповещений в зависимости от условий,Затем я вставляю снова с новым идентификатором, сгенерированным автоматически, но с теми же параметрами оповещения (показания, приоритет), кроме метки времени.когда я сохраняю объект оповещения, как указано выше, все записи обновляются в базе данных.
- Временная метка - это поле показаний
- vin - это идентификатор для показаний
Обновление 2: Это так или иначе связано с сеансами?Ссылка вызов jpa persist на отдельном объекте не вставляет повторяющуюся строку.Почему?
Обновление 3: я думаю, это из-за способа создания объекта оповещения.Я использую слюни, правила Java и вставить строку.Я создал предупреждение как глобальное.Теперь я изменил это.
Ниже мое правило, где / как я должен создать сущность Оповещение в правилах для сохранения:
rule "engine RPM"
when
alert: Alert()
reading: Reading()
vehicle: Vehicle(getVin() == reading.getVin(), getRedlineRpm() < reading.getEngineRpm())
then
new Alert().setPriority("High");
end