Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 传递给持久化的分离实体:JPA错误_Java_Spring_Hibernate_Jpa_Spring Data Jpa - Fatal编程技术网

Java 传递给持久化的分离实体:JPA错误

Java 传递给持久化的分离实体:JPA错误,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,在尝试将对象持久化到数据库中时,我的应用程序中出现以下错误 嵌套异常为org.hibernate.PersistentObjectException:传递给persist:com.delivery.Message的分离实体 实体: DAO层: 服务层: 不确定我为什么会出现此错误。在persist方法上抛出错误。出现此问题的原因是什么?您应该检查收到的实体中是否填写了messageId。请尝试以下代码: if (entity.getId() == null) { entityManage

在尝试将对象持久化到数据库中时,我的应用程序中出现以下错误

嵌套异常为org.hibernate.PersistentObjectException:传递给persist:com.delivery.Message的分离实体

实体:

DAO层:

服务层:

不确定我为什么会出现此错误。在persist方法上抛出错误。出现此问题的原因是什么?

您应该检查收到的实体中是否填写了messageId。请尝试以下代码:

if (entity.getId() == null) {
    entityManager.persist(entity);
} else {
    entityManager.merge(entity);
}

您应该使用Long类型而不是原语Long来允许identificator为null。

这通常意味着ID已填充。填充ID时,假设数据库记录已经存在,然后需要合并数据,而不是持久化数据。这是否回答了您的问题?
@Transactional
public void saveEntity(@Nullable T entity) {
    if (entity = null) {
        return;
    }

    entityManager.persist(entity);
    entityManager.flush();
    entityManager.detach(entity);
}
public void saveMessage(HttpEntity<Message> entity) throws Exception{
    try{
        repository.saveEntity(entity);    
    }catch(Exception e){
        throw e;
    }
    
}
if (entity.getId() == null) {
    entityManager.persist(entity);
} else {
    entityManager.merge(entity);
}