Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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 使用hibernate实体管理器更新实体_Java_Database_Hibernate_Jpa - Fatal编程技术网

Java 使用hibernate实体管理器更新实体

Java 使用hibernate实体管理器更新实体,java,database,hibernate,jpa,Java,Database,Hibernate,Jpa,我有一个实现,其中我的实体公司扩展了根实体 strategy =InheritanceType.JOINED.(I am using hibernate-entitymanager) 我有其他不扩展RootEntity的实体。当我创建所有实体时,它确实会创建。但是当我尝试更新RootEntity的扩展实体时,它不会更新。但非扩展实体正在更新。更新代码位于GenericDaoImpl中,因此它是相同的更新方法 有什么问题吗?我的代码是: @Transactional(value="tx") p

我有一个实现,其中我的实体
公司
扩展了
根实体

strategy =InheritanceType.JOINED.(I am using hibernate-entitymanager) 
我有其他不扩展
RootEntity
的实体。当我创建所有实体时,它确实会创建。但是当我尝试更新
RootEntity
的扩展实体时,它不会更新。但非扩展实体正在更新。更新代码位于
GenericDaoImpl
中,因此它是相同的更新方法

有什么问题吗?我的代码是:

@Transactional(value="tx")
public E update(E entity) {
    E merged = null;
    RootEntity baseEntity = null;
    if(entity instanceof RootEntity ){
        baseEntity = (RootEntity)entity;
        merged = entityManager.find(entityClass, baseEntity.getId());
    }
    merged = entityManager.merge(entity);
    entityManager.flush();
    return merged;
}
我尝试合并的对象:

public class Societa extends RootEntity implements Serializable{

     private static final long serialVersionUID = 1L;

     // ASSOCIAZIONE CAMPI DB VARIABILI NELLA CLASSE
     @Column(name="nomeSocieta",nullable = false,columnDefinition="CHAR(80)")
     private String nomeSocieta;

      ......
}
我的根实体是:

@Entity
@Inheritance(strategy =InheritanceType.JOINED)
    public class RootEntity {

       private static final long serialVersionUID = 1L;

       @Id
       @Column(name="id",nullable = false)
       @GeneratedValue(strategy = GenerationType.IDENTITY)
       private Long id;
        ...getters/setters..
   }

纽瓦兹,我需要看看你的
根实体
公司
实体

而且,我很难理解您提供的代码-

  • 为什么需要“如果”条件?如果这不是真的会发生什么
  • entityManager.flush()
    您不必这样做,如果我理解正确,您使用的是spring,并且
    @Transactional
    在调用方法完成时自动关闭/刷新事务

  • 你能举一个你试图合并的对象不起作用的例子吗?您是否收到错误消息,或者您只是没有看到数据库中的任何更改?嗨,我添加了一些代码示例,它没有给出任何错误,只是它没有更新。不要这么说,告诉我们您是如何解决的。这个论坛是为了帮助所有人,而不仅仅是你