У меня есть функция, которая должна вызывать базу данных для получения каждой записи, которая имеет 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;
}
}