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。
分享到:
相关推荐
例如,在订单系统中,订单和订单项之间的关系可以使用@OneToMany注解,并设置CascadeType为ALL,以实现级联操作。 在使用CascadeType时,需要注意以下几点: * 级联操作只能在满足数据库约束的情况下生效。 * 级联...
- 使用cascade时需谨慎,特别是`CascadeType.ALL`,因为它可能导致数据的意外丢失。 - 了解业务逻辑是决定何时使用cascade的关键,不恰当的使用可能导致数据不一致或性能问题。 - 在处理多对多关联时,应特别注意...
例如,你可以创建一个父实体,添加一些子实体,并设置级联操作为`CascadeType.ALL`,然后调用父实体的保存方法,观察数据库中是否同时保存了父实体和子实体。 四、数据库配置和Jar包 为了使用Hibernate,你需要正确...
当设置为`CascadeType.ALL`或`CascadeType.PERSIST`时,如果在父实体中创建了一个新的子实体,并且这个子实体还没有被持久化到数据库,那么在保存父实体时,Hibernate会自动将子实体一并保存。例如,在一对多关系中...
使用`CascadeType.ALL`可以方便地处理所有可能的级联操作,但需要注意可能会引起不必要的数据操作,因此在实际使用中应谨慎。 在实际使用中,根据业务需求选择合适的`CascadeType`非常重要。例如,如果你不希望级联...
Hibernate是一种流行的Java持久化框架,它允许开发人员将对象模型转换为关系数据库模型。...同时,合理使用级联操作(如`CascadeType.ALL`)可以简化数据操作,自动管理对象的状态和数据库的更新。
`CascadeType.ALL`参数表示级联操作,当对`EntityA`进行操作(如保存、更新、删除)时,会同时对关联的`EntityB`执行相同的操作。根据实际需求,可以选择其他级联类型,如`CascadeType.PERSIST`仅在保存时级联,`...
4. 可以通过`cascade`属性设置级联操作,如`CascadeType.ALL`,这将使得对父对象的操作会影响到子对象,如删除用户时,对应的订单也会被删除。 **三、反转关系** 反转关系指的是在一对多关系中,让关联的多方成为...
在这个例子中,User类与Role类通过`@ManyToOne`建立了一对多的关系,并通过`cascade = CascadeType.ALL`指定了级联操作。这意味着当保存或更新User对象时,其关联的Role对象也会被相应地处理。 总结起来,Hibernate...
- `CascadeType.ALL`:结合以上所有操作,即所有操作都将被级联应用。 ### 示例分析 假设我们有`School`和`Student`两个实体类,`School`拥有一个`studentSet`集合,表示一个学校拥有的所有学生。 #### 1. ...
例如,如果我们设置了`CascadeType.ALL`,当保存或删除一个`Student`时,JPA会自动保存或删除所有相关的`Course`。 ```java // 在Student实体的courses属性上设置级联操作 @OneToMany(mappedBy = "student", ...
例如,如果我们有一个`User`类和一个`Address`类,`User`有一个`List<Address>`的属性,我们可以在`@OneToMany`注解中添加`cascade = CascadeType.ALL`,表示当用户对象保存或更新时,其关联的所有地址也会被级联...
- 级联操作虽然方便,但需谨慎使用,尤其是`CascadeType.ALL`,因为它可能导致数据丢失或意外更新。 - 性能也是需要考虑的因素,级联操作可能会增加数据库操作的复杂性和开销。 - 最好在了解业务需求后,根据实际...
`cascade`属性用于配置级联操作,`CascadeType.ALL`意味着任何对`User`的操作(如保存、更新、删除)都将影响其关联的`Post`实体。 在`Post`实体中,我们需要定义一个反向的`ManyToOne`关联: ```java public ...
JPA提供了两种方式来维护一对多关系:`CascadeType.ALL`和`CascadeType.MERGE`。`CascadeType.ALL`意味着对父实体进行的操作(如保存、更新、删除)会级联到所有子实体。`CascadeType.MERGE`则表示仅在合并父实体时...
在`Person`类中,同样使用了`@OneToOne`注解,但这里`optional = true`表示`Person`可以没有对应的`IDCard`,`cascade = CascadeType.ALL`表示对`Person`的所有级联操作(包括保存、更新、删除等)都会影响到`IDCard...
常见的级联类型有`CascadeType.SAVE_UPDATE`、`CascadeType.DELETE`、`CascadeType.ALL`等。合理设置级联操作可以避免数据不一致,但需谨慎使用,防止不必要的数据丢失。 **5. 缓存策略(Cache)** 为了提高性能,...
`CascadeType.ALL`表示所有操作(包括保存、更新、删除等)都会自动应用到关联的对象。可以自定义级联类型,如只包含`CascadeType.SAVE_UPDATE`。 **五、懒加载与立即加载** 默认情况下,关联对象可能会被立即加载...
`CascadeType.ALL`表示所有对`User`的操作(如保存、更新、删除)都会自动应用到关联的`Profile`对象上。这可以简化数据操作,但需要注意可能会引发的级联删除问题。 4. **@JoinColumn**: `@JoinColumn`用于指定...