0

我有 2 个实体:Person 和 Phone(一对多关系)。我想使用 JoinTable:

class Person

    @OneToMany()
    @JoinTable(name="PERSON_PHONES", 
            joinColumns={ @JoinColumn(name="PERSON_ID") },
            inverseJoinColumns={ @JoinColumn(name="PHONE_ID") })
public List<Phone> getPhones(){...}

但是,由于某种原因我不能使用 JoinTable,所以我需要编写 PersonPhone 类。我怀疑关系,可能是这样吗?

Person -> PersonPhone:一对多双向 PersonPhone -> Phone:一对一单向

还有一个问题,如果我定义这个级联规则:

class Person {

@OneToMany(cascade=CascadeType.ALL,mappedBy="person")
public List<PersonPhone> getPersonPhones() {...}
...
}

class PersonPhone {

@OneToOne(cascade=CascadeType.ALL)
public Phone getPhone(){...}
...
}

// class phone has not fields for this relation

当一个人被删除时,一个人的电话会被删除吗?

4

1 回答 1

2

不清楚为什么不能使用连接表,但如果你保留这个设计,那么是的,由于cascade=CascadeType.ALL你在两个关联上定义的,删除一个人会删除它PersonPhone的 s,然后级联到Phone.

PersonPhone实体仅在其具有比人员和电话属性更多的属性时才有用。

于 2011-11-03T12:31:06.803 回答