简体   繁体   English

如何在Hibernate中使用HQL查询进行级联

[英]How to do cascade using hql query in hibernate

How to do cascade save or update using hql query in hibernate? 如何在Hibernate中使用hql查询进行级联保存或更新? also how can i use cascade update for some specific fields instead of updating all child table fields? 还如何才能对某些特定字段使用层叠更新,而不是更新所有子表字段?

for example table User has 例如表用户有
userName varchar(10) userName varchar(10)
Password varchar(10) 密码 varchar(10)

table UserAccessRights has 表UserAccessRights具有
username varchar(10) FK of User table 用户名 varchar(10) 用户表的FK
password varchar(10) FK of User table 密码 varchar(10) 用户表的FK
Authpassword varchar(10) 身份验证密码varchar(10)

cascade update should happen only for username not for password. 级联更新应该仅针对用户名而不是密码进行。 how can i acheive this? 我怎样才能做到这一点?

You don't. 你不知道

Since the cascade is a Hibernate configuration matter (ie HBM or annotations) the data must be returned to Java for processing of cascades. 由于级联是Hibernate的配置事项(即HBM或注释),因此必须将数据返回给Java以处理级联。 Doing UPDATE/DELETE row modifications in HQL happens entirely on the SQL server (and the SQL server does not understand JPA cascades, as JPA is a Java API not an SQL API or SQL standard). 在HQL中执行UPDATE / DELETE行修改完全在SQL服务器上进行(并且SQL Server无法理解JPA级联,因为JPA是Java API而不是SQL API或SQL标准)。

You need to specify your cascade setting in your hbm files I suppose. 我需要在hbm文件中指定级联设置。

<set name="columnrecord" cascade="save-update" table="..."...>
      <key>
            <column name="COLUMN_NAME" not-null="true" />
      </key>
      <one-to-many class="..." />
</set>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM