直接上代码
@Entity
@Table(name="country")
public class Country {
@Id
@Column(name="country_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private int area;
private Name name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public int getArea() {
return area;
}
public void setArea(int area) {
this.area = area;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
}
这是country类,其中的属性Name是另外一个类,代码如下
@Embeddable
public class Name {
@Column(name="first_name")
private String first;
@Column(name="last_name")
private String last;
@Parent
private Country owner;
public Name(){
}
public Name(String first, String last) {
this.first = first;
this.last = last;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
public Country getOwner() {
return owner;
}
public void setOwner(Country owner) {
this.owner = owner;
}
}
上面的代码相信大家都知道是什么意思,Name的两个属性分别映射一个数据列,其实就是把Name嵌入到Country里边去,但是里面有个细节
@Parent
private Country owner;
这里的owner是约定的名称,不能改成其他的比如owners之类。
另外
public Name(){
}
和
public Name(String first, String last) {
this.first = first;
this.last = last;
}
缺一不可,否则会报错。