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列。如果您想要它,那么很有可能
单表
不适合您的情况。这是一个很好的观点,我想我必须考虑我的设计,非常感谢。