orgについてhibernate.ObjectNotFoundException: No row with the given identifier exist

1655 ワード

最近、プロジェクトのアップグレード、外部インタフェースの変更により、データベース・テーブルのデータに対して一定の更新操作が行われました.もちろん、テーブルの構造は変更されていません.その後、導入すると、次のようにエラーが発生しました.
 
  : Servlet.service() for servlet default threw exception
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.iss.fit.po.system.SysDepartment#361]
at org.hibernate.impl.SessionFactoryImpl$1.handleEntityNotFound(SessionFactoryImpl.java:377)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:145)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:179)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:846)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:557)
at org.hibernate.type.EntityType.resolve(EntityType.java:379)

               
このようなエラーは、一般にサーブレットという2つに分けられる.サービス()for servlet default threw exception、1つ目はjspページバインド要素エラーです.もちろん、このエラーは非常にはっきりと報告されます.xx.jsp(xx,xxx)のどこが間違っていますか?2つ目は、ここで、どちらがエンティティクラスのマッピング対象xxに対してエラーを報告するか、ここでのxxは、#4,#5など、固定されているわけではありません.私のところに来たのはSysDepartment 361です.つまり、私のAテーブルはSysDepartmentに関連しており、Aテーブルには、関連するSysDepartmentのIDが361であるデータがあります.したがって、参照を問い合わせるときに手に入らないと、上記のエラーが報告されます.
 
解決策も簡単です.ここではSysDepartmentテーブルを更新したので、ID 361のデータは存在しません.では、関連テーブルAにはA.SysDepartment_IDという列のデータも、A.SysDepartment_は存在しませんID=361なので、A.SysDepartment_IDをSysDepartmentテーブルで新しく更新されたデータのIDに設定すれば良いか、または手動で361のIDを追加してもよい.