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
如何在hibernate中更新引用的实体_Hibernate - Fatal编程技术网

如何在hibernate中更新引用的实体

如何在hibernate中更新引用的实体,hibernate,Hibernate,我有以下几张表 Question_Table:{ quesId int primary key, statusid int reference to Status_Table.statuId } Status_Table:{ statusId int primary key } Answers_Table:{ index int primary key, quesId int reference to Question_Table.quesId, answerDescription var

我有以下几张表

Question_Table:{
quesId int primary key,
statusid int reference to Status_Table.statuId
}


Status_Table:{
statusId int primary key
}

Answers_Table:{
index int primary key,
quesId int reference to Question_Table.quesId,
answerDescription varchar
}
问题在这里有多个答案:问题表-答案表有一对多关系。 每个问题都有其状态id:问题\表格-状态\表格有多对一关系
查询:在最终用户更新应答_表中的应答时,我想更新其状态:Complete in question_表,但当我触发更新时,它只在日志中验证的应答表上触发更新,我对这种情况感到困惑,因为我在这里没有实体之间的直接关系-状态和答案表。

仅通过执行updateanswer;,您将无法更新问题表中的状态id

首先,您需要从问题表中获取与答案关联的记录。 之后,您需要使用新的状态id对获取的问题记录启动更新查询

比如说,

更新应答器; 如果answer.question_id=1,则执行:从id=1的问题中选择* 设置有问题的状态&然后执行:updatequestion;
在Hibernate会话连接的对象中使用对象时,不需要调用update。Hibernate查找更改

伪代码:

answer = session.CreateQuery("select ...")
answer.Question.Status = Completed;
session.Commit();

更改在提交时或在查询前刷新时发送到数据库。

只要您谈论的是表而不是对象,您就没有使用ORM的实际功能。请多说一些关于实际功能的话,我以为我在使用实体类及其完美的orm???我以为一些反向或级联可以做到这一点??尝试了updateanswer.getQuestion的方法;它包含quesId和status entity对象,非常好,但问题实体的initialedby字段为null,这在更新中也不是必需的,但在update:not null属性引用null或临时值时会导致问题:com.hibernate.beans.question.initatedbyth这是一个单独的问题。对于这个问题,请参见链接:&我使用了完全相同的HQL方式,因为在我的情况下,从会话加载实体是不可能的,并且它工作正常。谢谢。然后你做点别的。我不能帮助你,只有信息,它是不工作的。