Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Spring boot Hibernate-更改数据类型的最佳方法是什么?_Spring Boot_Hibernate - Fatal编程技术网

Spring boot Hibernate-更改数据类型的最佳方法是什么?

Spring boot Hibernate-更改数据类型的最佳方法是什么?,spring-boot,hibernate,Spring Boot,Hibernate,我有以下遗产 class A {} class B extends A {} class C extends A {} 使用@inheritation(strategy=InheritanceType.SINGLE_表) 现在,当我第一次使用session.save插入C的实例时,DTYPE列被设置为“C”。 但是,当我使用session.update用C的确切标识符和其他属性值更新B的实例时,hibernate根本不更新数据类型。这是hibernate日志给我的 更新 A. 设置 field

我有以下遗产

class A {}
class B extends A {}
class C extends A {}
使用@inheritation(strategy=InheritanceType.SINGLE_表)

现在,当我第一次使用
session.save
插入C的实例时,DTYPE列被设置为“C”。 但是,当我使用
session.update
用C的确切标识符和其他属性值更新B的实例时,hibernate根本不更新数据类型。这是hibernate日志给我的

更新 A. 设置 fieldA=?,fieldB=? 哪里 id=

没有数据类型更改。我的工作是使用HQL单独更新数据类型

Session session = sessionFactory.getCurrentSession();
Query<?> query = session.createQuery("UPDATE A SET DTYPE = :type WHERE id = :id");
    
query.setParameter("type", typeName);
query.setParameter("id", instance.getId());
query.executeUpdate();
Session Session=sessionFactory.getCurrentSession();
Query Query=session.createQuery(“更新集合数据类型=:type,其中id=:id”);
query.setParameter(“type”,typeName);
setParameter(“id”,instance.getId());
query.executeUpdate();
它可以工作,但我认为这不是更新数据类型的最佳实践。 有更好的方法吗?
谢谢大家!

我想您不应该想更新DTYPE列。如果您想要它,那么很有可能
单表
不适合您的情况。这是一个很好的观点,我想我必须考虑我的设计,非常感谢。