我一直在尝试使用hibernate-core-4.3.10.Final.jar来创建一个虚拟项目。我创建了一个模型类UserDetails,它有一个Address字段,实际上是一个可嵌入的对象。在模型类中,我使用@Embedded注释声明了这个字段,但我还没有使用@Embeddable注释将Address类定义为Embeddable。该对象仍然嵌入在UserDeatils实体中。 @Embeddable注释是否可选? @Embedded注释是否足以让hibernate相应地进行映射? 以下是代码片段: -
/** UserDetails Class **/
package com.st.hibernate.models;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
@Entity
@Table(name="USER_DETAILS")
public class UserDetails {
@Id
@Column(name="USER_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column(name="USER_NAME")
@Transient
private String userName;
@Embedded
private Address address;
/**
* @return the address
*/
public Address getAddress() {
return address;
}
/**
* @param address the address to set
*/
public void setAddress(Address address) {
this.address = address;
}
@Temporal(TemporalType.DATE)
private Date currentDate;
@Lob // Large Objects----> CLob/BLob---->Character/Byte Larger Object
private String description;
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description the description to set
*/
public void setDescription(String description) {
this.description = description;
}
/**
* @return the currentDate
*/
public Date getCurrentDate() {
return currentDate;
}
/**
* @param currentDate the currentDate to set
*/
public void setCurrentDate(Date currentDate) {
this.currentDate = currentDate;
}
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
}
和地址类: -
package com.st.hibernate.models;
public class Address {
private String pincode;
private String city;
private String state;
/**
* @return the pincode
*/
public String getPincode() {
return pincode;
}
/**
* @param pincode the pincode to set
*/
public void setPincode(String pincode) {
this.pincode = pincode;
}
/**
* @return the city
*/
public String getCity() {
return city;
}
/**
* @param city the city to set
*/
public void setCity(String city) {
this.city = city;
}
/**
* @return the state
*/
public String getState() {
return state;
}
/**
* @param state the state to set
*/
public void setState(String state) {
this.state = state;
}
}
提前致谢。