1

個人と車の間に @ManyToOne 一方向の関係があります。つまり、車は複数の人が所有できます。問題は、車を削除すると、車の ID が人のエンティティの結合列から削除されないことです。車を削除した後、所有者の人物結合列から車の ID を削除するように JPA を構成する方法はありますか?

注: 親の車の参照を null に更新する必要があり、各エンティティ (車/人) は他のエンティティの存在に依存しないため、orpahRemoval=true を使用しても役に立ちません...

 @Entity
    public class Car{
        @Id
        @GeneratedValue
        private long id;
    }

    @Entity
    public class Person {
        @Id
        @GeneratedValue
        private long id;

        @ManyToOne
        @JoinColumn(name="CAR_ID")
        private Car car;  
    }
4

1 に答える 1

1

いいえ。クエリを実行して、指定された車を持っているすべての人を検索し、車を null に設定してから、車を削除する必要があります。

List<Person> persons = em.createQuery("select p from Person p where p.car = :car", Person.class)
                         .setParameter("car", car)
                         .getResultList();
for (Person person : persons) {
    person.setCar(null);
}
em.remove(car);
于 2012-07-04T21:07:08.050 に答える