Повторяющиеся записи получены из простого вызова хранилища CRUD - PullRequest
0 голосов
/ 18 июня 2019

У меня есть функция, которая должна вызывать базу данных для получения каждой записи, которая имеет accountRef = userInput.

Таблица, из которой она извлекается, не имеет первичного ключа. Мой код пока опубликован ниже. В итоге получается, что если есть 3 записи с accountRef = 'abc', он дублирует первую запись 3 раза и возвращает ее. Так, например, если есть 2 записи с accountRef = 'xyz', возвращается [{accountRef: 'xyz', имя: 'первая запись'}, {accountRef: 'xyz', имя: 'первая запись'}]

Вот мой код: BasicAccountAuditRepository.java

package org.fusion.restful.basicaccount.dao;
import org.fusion.restful.basicaccount.model.BasicAccount;
import org.fusion.restful.basicaccount.model.BasicAccountAudit;
import org.fusion.restful.basicaccount.model.BasicAccountAuditPK;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import org.springframework.data.repository.query.Param; 


import java.util.List;
import java.util.Optional;

@Repository
public interface BasicAccountAuditRepository extends CrudRepository<BasicAccountAudit, BasicAccountAuditPK> {

    List<BasicAccountAudit> findAll();

    List<BasicAccountAudit> findByAccountRef(String accountRef);

}

BasicAccountAudit.java

package org.fusion.restful.basicaccount.model;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.Date;

@XmlRootElement
@Entity
@Table(name = "tb_Account_History", schema="dbo")
@IdClass(BasicAccountAuditPK.class)
public class BasicAccountAudit implements Serializable{
    @Id
    @Column(columnDefinition = "String")

  private String accountRef;
  private String client;
  .
  .
  .
  .

    @Temporal(TemporalType.TIMESTAMP)
    @Column(insertable = true, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private Date enteredDate;



    @Temporal(TemporalType.TIMESTAMP)
    @Column(insertable = true, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private Date lastUpdatedDate;


//.......getters & setters
}

BasicAccountAuditPK.java

package org.fusion.restful.basicaccount.model;

import java.io.Serializable;

public class BasicAccountAuditPK implements Serializable {

    private String accountRef;


    public String getAccountRef() {
        return accountRef;
    }

    public void setAccountRef(String accountRef) {
        this.accountRef = accountRef;
    }

}

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