Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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中使用hql查询进行级联_Java_Oracle_Hibernate - Fatal编程技术网

Java 如何在hibernate中使用hql查询进行级联

Java 如何在hibernate中使用hql查询进行级联,java,oracle,hibernate,Java,Oracle,Hibernate,如何在hibernate中使用hql查询进行级联保存或更新?另外,如何对某些特定字段使用级联更新,而不是更新所有子表字段 例如,表用户有 用户名varchar(10) 密码varchar(10) 表UserAccessRights具有 用户名varchar(10)FK用户表 密码varchar(10)FK用户表 Authpassword varchar(10) 级联更新应该只针对用户名而不是密码进行。我怎么能做到这一点呢?你没有 由于级联是Hibernate配置问题(即HBM或注释),因此必须将

如何在hibernate中使用hql查询进行级联保存或更新?另外,如何对某些特定字段使用级联更新,而不是更新所有子表字段

例如,表用户有
用户名varchar(10)
密码varchar(10)

表UserAccessRights具有
用户名varchar(10)FK用户表
密码varchar(10)FK用户表
Authpassword varchar(10)

级联更新应该只针对用户名而不是密码进行。我怎么能做到这一点呢?

你没有

由于级联是Hibernate配置问题(即HBM或注释),因此必须将数据返回到Java以处理级联。在HQL中执行更新/删除行修改完全是在SQL server上进行的(SQL server不理解JPA级联,因为JPA是Java API而不是SQL API或SQL标准)。

您不理解


由于级联是Hibernate配置问题(即HBM或注释),因此必须将数据返回到Java以处理级联。HQL中的更新/删除行修改完全在SQL server上进行(SQL server不理解JPA级联,因为JPA是Java API,不是SQL API或SQL标准)。

我想您需要在hbm文件中指定级联设置

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

我想您需要在hbm文件中指定级联设置

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


你能说得更清楚一点吗?一个代码示例可能很有用。您能更明确一点吗?代码示例可能很有用。这适用于类似于会话#保存(对象)和会话#更新(对象)的API,但问题是如何使用类似于HQL API的会话#创建查询(字符串)。也许您可以引用该API的一个示例使用,该API使用引用的HBM XML片段中的级联设置。我不认为你会很高兴接受教育:)嗨,Darryl,如果我写一个HQL来操作一个实体,会不会休眠读取它的相关配置(在hbm文件或注释实体类中)并执行所需的级联?你误解了我的观点。HQL在服务器上作为语句运行,可以完全删除/销毁SQL server上的数据(批量操作)。为了让hibernate知道何时执行级联,它需要知道被销毁的数据值何时非空。然后执行其他SQL语句以实现级联操作。我引用Session#save()、#delete()和#update()等API的要点。。数据加载到Java内存中,允许hibernate程序控制“级联”设置生效。对于数据修改HQL,这是不可能的。这适用于类似于会话#保存(对象)和会话#更新(对象)的API,但问题是如何使用类似于HQL API的会话#创建查询(字符串)。也许您可以引用该API的一个示例使用,该API使用引用的HBM XML片段中的级联设置。我不认为你会很高兴接受教育:)嗨,Darryl,如果我写一个HQL来操作一个实体,会不会休眠读取它的相关配置(在hbm文件或注释实体类中)并执行所需的级联?你误解了我的观点。HQL在服务器上作为语句运行,可以完全删除/销毁SQL server上的数据(批量操作)。为了让hibernate知道何时执行级联,它需要知道被销毁的数据值何时非空。然后执行其他SQL语句以实现级联操作。我引用Session#save()、#delete()和#update()等API的要点。。数据加载到Java内存中,允许hibernate程序控制“级联”设置生效。对于修改HQL的数据,这是不可能的。