package com.symbio.fuhu.appstore.jpa.entity;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name = "currency")
public class Currency extends AppStoreEntity {
private static final long serialVersionUID = -330160855204109738L;
public Currency() {
}
public Currency(Name name, SystemInfo systemInfo) {
this();
this.name = name;
this.systemInfo = systemInfo;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "objectId", nullable = false, unique = true, length = 20)
private Long objectId;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "name_id", referencedColumnName = "objectId", nullable = true)
private Name name;
public Long getObjectId() {
return objectId;
}
public void setObjectId(Long objectId) {
this.objectId = objectId;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
}
<tr>
<td>Currency Name:</td>
<td><form:input path="currency.name.fullName" cssClass="input" maxlength="50"/>
<form:errors path="currency.name.fullName" cssClass="red"/>
</td>
</tr>
save.jsp 有CascadeType.ALL ,保存currency的时候,才会自动级联创建name,
不然回报错:object references an unsaved transient instance - save the transient instance before flushing。