Sprint Data JPA - методы save (), вставляющие дубликаты в таблицу - PullRequest
1 голос
/ 11 мая 2019

У меня есть Время простоя .Я устанавливаю значения для объекта простоя и передаю эти объекты в метод JpaReposirtory save(downtimeobject).save() вставка повторяющихся записей.Я прошел форумы, но не повезло, я не получил никакого решенияПрямо сейчас я делаю после сохранения объекта в базу данных, проверяя, вставлены ли дубликаты или нет.Если он вставлен, я удаляю через JpaRepository delete(downtimeId).

Моя сущность downitme

@Entity
@Table(name = "tDownTime")
public class DownTime {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "DowntimeId")
    private int downtimeId;

    @Column(name = "SiteId")
    private int siteId;

    @Column(name = "PlantId")
    private int plantId;

    @Column(name = "UnitId")
    private int unitId;

    @Column(name = "EquipmentId")
    private int equipmentId;

    @Column(name = "ShiftId")
    private int shiftId;

    @Column(name = "DownTimeReasonId")
    private Integer downTimeReasonId;

    @Column(name = "DownTimeReasonName")
    private String downTimeReasonName;

    @Column(name = "DownTimeReasonDescription")
    private String downTimeReasonDescription;

    @Column(name = "DownTimeStartDate")
    private LocalDate downTimeStartDate;

    @Column(name = "DownTimeStartTime")
    private LocalTime downTimeStartTime;

    @Column(name = "DownTimeEndDate")
    private LocalDate downTimeEndDate;

    @Column(name = "DownTimeEndTime")
    private LocalTime downTimeEndTime;

    @Column(name = "DownTimeDuration")
    private Long downTimeDuration;

    @Column(name = "HourResetTime")
    private LocalDateTime hourResetTime;

    @Column(name = "KPIDate")
    private LocalDate kPIDate;

    @Column(name = "CreatedBy")
    private String createdBy;

    @Column(name = "CreatedOn")
    private LocalDateTime createdOn;

    @Column(name = "ModifiedBy")
    private String modifiedBy;

    @Column(name = "ModifiedOn")
    private LocalDateTime modifiedOn;

    @Column(name = "SKUId")
    private int sKUID;

    @Column(name = "DownTimeStartDateTime")
    private LocalDateTime downTimeStartDateTime;

    @Column(name = "DownTimeEndDateTime")
    private LocalDateTime downTimeEndDateTime;

    @Column(name = "WorkOrderId")
    private int workOrderId;

    @Column(name = "IsManual")
    private boolean isManual;

    @Column(name = "AutoPauseResume")
    private boolean isAutoPauseResume;

    @Column(name = "DowntimeType")
    private String downtimeType;

    @Column(name = "DownTimeStatus")
    private String downtimeStatus;

DownTime downTime = new DownTime();// creating object for setting values to object to save as entity

downTime.setUnitId(calculationOEEHelper.getUnitId());   downTime.setEquipmentId(calculationOEEHelper.getEquipmentId());
downTime.setShiftId(calculationOEEHelper.getShiftId());
downTime.setDownTimeReasonId(0);
downTime.setDownTimeReasonName(ParameterTags.UNASSIGNED);
.
.
.

downTime = downtimeRepository.save(downTime);

она вставляет 2 базы данных в базу данных.Я использую MSSQL DB

DownTime [downtimeId = 2148, siteId = 1, plantId = 1, unitId = 12, equipmentId = 33, shiftId = 28, downTimeReasonId = 0, downTimeReasonName = Unassigned, downTimeReasonDescription =Unassigned, downTimeStartDate = 2019-05-11, downTimeStartTime = 06: 36: 42, downTimeEndDate = 2019-05-11, downTimeEndTime = 06: 37: 23, downTimeDuration = 41, hourResetTime = 2019-05-11T07: 30: 01,kPIDate = 2019-05-11, созданBy = СИСТЕМА, созданOn = 2019-05-12T01: 06: 55,865, модифицированнымBy = СИСТЕМА, модифицированнымn = 2019-05-12T01: 06: 55,865, sKUID = 5, downTimeStartDateTime = 2019-05-11T06: 36: 42, downTimeEndDateTime = 2019-05-11T06: 37: 23, workOrderId = 74, isManual = false, isAutoPauseResume = true, downtimeType = НЕ РАСПИСАНО, downtimeStatus = Running]

DownTime [downtimeId = 2149, siteId = 1, plantId = 1, unitId = 12, equipmentId = 33, shiftId = 28, downTimeReasonId = 0, downTimeReasonName = Unassigned, downTimeReasonDescription = Unassigned, downTimeStartDate = 2019-05-11, downTimeStartTime = 06: 36: 42, downTimeTimeTate = 06: 36: 42, downTimeTndTate= 2019-05-11, downTimeEndTime= 06: 37: 23, downTimeDuration = 41, hourResetTime = 2019-05-11T07: 30: 01, kPIDate = 2019-05-11, созданныйBy = СИСТЕМА, созданный в = 2019-05-12T01: 06: 55.865, измененныйBy = СИСТЕМА, updatedOn = 2019-05-12T01: 06: 55,865, sKUID = 5, downTimeStartDateTime = 2019-05-11T06: 36: 42, downTimeEndDateTime = 2019-05-11T06: 37: 23, workOrderId = 74, isManual = false, isAutoPauseResume= true, downtimeType = НЕ РАСПИСАНО, downtimeStatus = Running]

downtimeId другой, остальные все одинаковые

Может ли какой-то орган помочь мне решить эту проблему.

1 Ответ

0 голосов
/ 12 мая 2019

Я не уверен, понимаю ли я, чего вы пытаетесь достичь, но это похоже на ожидаемое поведение.Если вы хотите обновить объект вместо создания нового, вам следует извлечь старую версию из хранилища и установить для нее значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...