如何在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方式,因为在我的情况下,从会话加载实体是不可能的,并且它工作正常。谢谢。然后你做点别的。我不能帮助你,只有信息,它是不工作的。