私は同じエンティティの別のオブジェクトを参照できるエンティティを持っています。データベース内のオブジェクトを削除したいとき、私はConstraintViolationを得ることができます。したがって、まず、削除するオブジェクトの参照を持つエンティティを検索し、値をnullに設定します。私はcriteriaBuilderでこれを行い、一括更新を行います。 その後、エンティティを削除します。次のselectステートメントで私はエラーを受け取りました:複数のEntityManagerでHibernateを使ってデータを削除する
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance
私はentityManagerの2つの異なるインスタンスを使用している可能性があります。最初のものは一括更新を行い、2番目のものはそのエンティティを削除します。 したがって、2番目のentityManagerがフラッシュするとどうなりますか?最初のentityManagerのデータもデータベースで変更されていますか?もしそうなら、データベース内のステートメントはどの順序で実行されますか? また別の間違いをしますか? ありがとうございました!
あなたはcascadeTypeを使用する必要があります – Vaseph
私は通常、そのようなデータを削除できないはずなので、ConstraintViolationを取得したいと思います。しかし、その特殊なケースでは、データベースからデータを削除することが許されるべきです。 しかし、何かを学ぶだけで、どのカスケードタイプが選択できるのでしょうか? – Markus
CascadeTypeを使用できます.ALL – Vaseph