Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Data JPA-保存对象列表时的重复键_Java_Sql_Spring_Spring Data Jpa - Fatal编程技术网

Java Spring Data JPA-保存对象列表时的重复键

Java Spring Data JPA-保存对象列表时的重复键,java,sql,spring,spring-data-jpa,Java,Sql,Spring,Spring Data Jpa,我有一个JPA存储库方法,它应该保存一个对象列表 我的实体是 @Entity @Table(name="ENERGYHISTORY") public class EnergyHistory { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "z_energy_history_generator") @SequenceGenerator(name="z_energy_history_generat

我有一个JPA存储库方法,它应该保存一个对象列表

我的实体是

@Entity
@Table(name="ENERGYHISTORY")
public class EnergyHistory {

    @Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "z_energy_history_generator")

@SequenceGenerator(name="z_energy_history_generator", sequenceName = "z_energy_history_seq", allocationSize=1)
    @Column(name="ID")
    private int id;

//other fields, getters and setters
问题是

@Query(value="select max(REALENERGY) as REALENERGY, `OBJECTID`, DATE_FORMAT(MAX(LASTUPDATE),'%Y-%m-%d %H:%i:00') "
            + "AS LASTUPDATE from ENERGY WHERE str_to_date(LASTUPDATE, '%Y-%m-%d %H:%i:%s' ) < " +
    "str_to_date(:lastUpdate, '%Y-%m-%d %H:%i:%s' ) group by ROUND(UNIX_TIMESTAMP(LASTUPDATE) DIV 3600), OBJECTID"
            + " order by LASTUPDATE DESC", nativeQuery=true)
List<Object[]> historicizeEnergy(@Param("lastUpdate")String lastUpdate);
(很明显,重复的条目每次都会更改,这是一项计划任务)。没有明确的理由说明为什么添加了一些行,然后失败了。。有时会添加3-400行,有时会添加50行

编辑

我也改变了,现在我保存每个对象,而不是整个列表,但错误仍然发生

@Override
    public String saveEnergyHistory() throws ParseException {

        LocalDateTime date = LocalDateTime.now().minusMinutes(15);
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String lastUpdate = date.format(dtf);

        List<Object[]> results = repository.historicizeEnergy(lastUpdate);
        List<EnergyHistory> list = new ArrayList<>();
        for(Object[] o : results){
            EnergyHistory eh = new EnergyHistory();
            eh.setRealEnergy((float) o[0]);
            eh.setObject(objectService.findById((int) o[1]));
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date fromDate = sdf.parse((String) o[2]);
            eh.setLastUpdate(fromDate);
            list.add(eh);
        }

        repository.save(list);

        return lastUpdate;
    }
SQL Error: 1062, SQLState: 23000
Duplicate entry '5001574' for key 'PRIMARY'