1
我在MySql Workbench上有一個大的數據庫,我試圖映射Eclipse Mars上的實體之間的關係,這要歸功於Hibernate和JPA模塊。事實是,我收到錯誤: 「在屬性'personAddresses'中,」映射「屬性'peopleAdd'具有該關係的無效映射類型。」 這是涉及的實體。在Hibernate JPA的ManyToMany關係中的錯誤
我一直說,做一個正向工程,休眠創造了我一個AddressId類,其中地址的複合主鍵映射。我懷疑問題可能是這個,但我不確定,你能幫我嗎? 下我發佈的代碼,以便更清楚地瞭解類是如何實現的。
@Entity
@IdClass(AddressId.class)
@Table(schema = "YouDroop", name = "Address")
public class Address implements Serializable
{
...
private Collection<Person> peopleAdd = new HashSet<Person>();
@Id
@Column(name = "Address", length = 45, unique = true, nullable = false)
private String address;
@Id
@Column(name = "Number", unique = true, nullable = false)
private int number;
...
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(
name = "PersonHasAddress",
joinColumns = {
@JoinColumn(name = "Address_Address", referencedColumnName = "Address", nullable = false),
@JoinColumn(name = "Address_Number", referencedColumnName = "Number", nullable = false)
},
inverseJoinColumns = {@JoinColumn(name = "Person_Email", referencedColumnName = "Email", nullable = false)}
)
public Collection<Person> getPeopleAddressed(){
return this.peopleAdd;
}
public void setPeopleAddressed(Collection<Person> people){
this.peopleAdd = people;
}
}
public class AddressId implements Serializable
{
private String address;
private int number;
public AddressId(){}
public AddressId(String address, int number) {
super();
this.address = address;
this.number = number;
}
...
}
@Entity
@Table(name = "Person", schema = "YouDroop", uniqueConstraints =
{ @UniqueConstraint(columnNames = "NickName"),
@UniqueConstraint(columnNames = "Password") })
public class Person implements Serializable
{
...
private Collection<Address> addresses = new HashSet<Address>();
...
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "peopleAdd")
public Collection<Address> getPersonAddresses(){
return this.addresses;
}
public void setPersonAddresses(Collection<Address> addresses){
this.addresses = addresses;
}
}
所以,如果我要地圖領域,我已經把註釋在球場上,而如果我要地圖的方法,我有沒有把註釋放在方法上(就像我所做的那樣)?這是對的嗎? – MissArmstrong
是的,這是正確的。 – Ish
非常感謝你! – MissArmstrong