CascadeType.ALL使用

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。

你可能感兴趣的:(jsp,jpa)