我有一个实体类警报,当我创建一个新警报并保存它时,它用匹配的参数替换所有行,读取和优先级在警报实体中可以重复。下面是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:
首先,我根据条件在警报表中插入一条记录。那么
我再次插入一个自动生成的新id,但是
相同的警报参数(读数,优先级)除了时间戳。当我
保存alert对象,就像上面所有的记录都被更新一样
在数据库中。
时间戳是一个读数字段
vin是读数的id
更新3:我认为这是因为我创建警报实体的方式。我正在使用drools、java规则和insert row。我已经创建了全球警报。我现在改了这个。
下面是我的规则,我应该在规则中的何处/如何创建警报实体以保持:
rule "engine RPM"
when
alert: Alert()
reading: Reading()
vehicle: Vehicle(getVin() == reading.getVin(), getRedlineRpm() < reading.getEngineRpm())
then
new Alert().setPriority("High");
end