2
我有兩個類A和B. B擴展A.我想通過HQL類A進行更新。B按每個具體類的表進行映射。我無法控制映射。所以我不能介紹一個新的抽象類。僅將HQL查詢限制到父類
「更新一組attr1 = 1」將據我所知更新A類和B類。是否可以通過HQL只更新A類?我可以阻止使用特殊製作的HQL創建臨時批量更新表嗎?
public class A {
...
}
public class B extends A {
...
}
session.createQuery("Update A set attr1=1").executeUpdate();
<hibernate-mapping auto-import="false" default-
cascade="none" default-access="property" default-lazy="true">
<class name="A" table="a" abstract="false"
polymorphism="implicit" dynamic-update="false" dynamic-insert="false" select-before-update="false">
<id name="id" column="id"/>
<property name="attr1" column="attr1" unique="false" optimistic-lock="true" lazy="false" generated="never"/>
</class>
</hibernate-mapping>
<hibernate-mapping auto-import="false" default-cascade="none" default-access="property" default-lazy="true">
<union-subclass name="B" table="b" batch-size="20" extends="A" dynamic-update="false" dynamic-insert="false" select-before-update="false">
<property name="attr2" column="attr2" unique="false" optimistic-lock="true" lazy="false" generated="never"/>
</union-subclass>
</hibernate-mapping>
你使用的是'cascade = CascadeType.ALL',你能分享一下你的代碼,這樣我們可以瞭解更多嗎? –
我添加了一些示例代碼。我認爲級聯只適用於協會而不是繼承。 – slowjack2k
好吧,如果'B擴展A',那麼'更新A集attr1 = 1'會影響'B'並且它從'A'繼承,這就是繼承的工作原理。 –