package model;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
public class UserInfo {
@Id
private int id;
@Basic
private String username;
@ManyToMany
@JoinTable(name="userinfo_address",
joinColumns=@JoinColumn(name="userinfo_id"),
inverseJoinColumns=@JoinColumn(name="address_id"))
@Fetch(FetchMode.JOIN)
private Collection<Address> address;
public Collection<Address> getAddress() {
return address;
}
public void setAddress(Collection<Address> address) {
this.address = address;
}
...........
}
参照官方文档将
@ManyToMany
@JoinTable(name="userinfo_address",
joinColumns=@JoinColumn(name="userinfo_id"),
inverseJoinColumns=@JoinColumn(name="address_id"))
@Fetch(FetchMode.JOIN)
放在public Collection<Address> getAddress()上将出错,郁闷
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Collection, for columns: [org.hibernate.mapping.Column(address)]
解决方法:将这些注记放在字段上就OK了