Java Spring JPA在保存多个实体时插入到错误列

Java Spring JPA在保存多个实体时插入到错误列,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我遇到了一个问题,我一次保存了一个实体列表,有时有些行的值被写入了错误的列 基本上,我有一个Movie实体,它扩展了Show(用@MappedSuperclass注释),它扩展了可跟踪性,也用@MappedSuperclass注释,如下所示: @MappedSuperclass @EntityListeners(TraceableEntity.TraceableEntityListener.class) public abstract class TraceableEntity { @C

我遇到了一个问题,我一次保存了一个实体列表,有时有些行的值被写入了错误的列

基本上,我有一个Movie实体,它扩展了Show(用
@MappedSuperclass
注释),它扩展了可跟踪性,也用
@MappedSuperclass
注释,如下所示:

@MappedSuperclass
@EntityListeners(TraceableEntity.TraceableEntityListener.class)
public abstract class TraceableEntity {
    @Column
    private Date createdOn;

    @Column
    private Date dateUpdated;

    public Date getCreatedOn() {
        return createdOn;
    }

    public void setCreatedOn(Date createdOn) {
        this.createdOn = createdOn;
    }

    public Date getDateUpdated() {
        return dateUpdated;
    }

    public void setDateUpdated(Date dateUpdated) {
        this.dateUpdated = dateUpdated;
    }

    public static class TraceableEntityListener {
        @PrePersist
        public void beforeInsert(TraceableEntity entity) {
            if (entity.getCreatedOn() == null) {
                entity.setCreatedOn(new Date());
            }
        }

        @PreUpdate
        public void beforeUpdate(TraceableEntity entity) {
            entity.setDateUpdated(new Date());
        }
    }
}
现在,在某些情况下,createdOn的值以dateUpdated结束,如下所示


简而言之,我的应用程序是一个从API检索数据的刮板。我在
CompletableFuture
中使用
restemplate
同时下载数据,然后一次性保存所有内容。调用
.save(…)
的方法用
@Transactional
注释。当列表的大小小于大约1500时,可以保存,但由于某种原因,当列表的大小超过1500时,似乎出现了问题。我真的很感谢你在这件事上的时间和帮助

它总是发生在同一个地方吗?例如,您是否缺少一些行?也许你正在抓取的某些东西的文本中有一些特殊字符没有正确转义?您可能希望打开日志记录,以准确查看发送到服务器的内容


如果你只擦掉那些“有问题”的电影,结果很好,可能是因为实际问题发生在有问题的电影之前

奇怪的是,如果我只刮取
dateUpdated
中包含
createdOn
的行(即屏幕截图中的最后4个条目),那么一切都很好。。。我不知道这里发生了什么……假设您想要一个带有Spring的审计机制,我认为使用Spring数据审计很容易。参考这个嗨Jeff,我刚刚发现这是API的问题,不是我的代码。。。