我将组件对象映射到componentMeta对象,并设置了cascade(javax.persistence.CascadeType)action = all,但是数据库中的关系操作仍然是Restrict(它不会更新为层叠)
这里是Component对象:
@Entity
@Table(name = "component")
public class Component {
private int idComponent;
private List<ComponentMeta> componentMetas;
public Component() {
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getIdComponent() {
return this.idComponent;
}
public void setIdComponent(int idComponent) {
this.idComponent = idComponent;
}
@OneToMany(mappedBy = "component", cascade = CascadeType.ALL)
public List<ComponentMeta> getComponentMetas() {
return this.componentMetas;
}
public void setComponentMetas(List<ComponentMeta> componentMetas) {
this.componentMetas = componentMetas;
}
}
和ComponentMeta对象:
@Entity
@Table(name = "ComponentMeta")
public class ComponentMeta {
private int idComponentMeta;
private Component component;
public ComponentMeta() {
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idComponentMeta", unique = true, nullable = false)
public int getIdComponentMeta() {
return idComponentMeta;
}
public void setIdComponentMeta(int idComponentMeta) {
this.idComponentMeta = idComponentMeta;
}
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "idComponent")
public Component getComponent() {
return component;
}
public void setComponent(Component component) {
this.component = component;
}
}
我在Spring Boot中的休眠配置(application.properties):
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
为什么关系操作不能自动更新以级联?
如果你想Hibernate来生成ON DELETE CASCADE
一个外键,你需要把@OnDelete
在@OneToMany
一边:
@OneToMany(mappedBy = "component", cascade = CascadeType.ALL)
@OnDelete(action = OnDeleteAction.CASCADE)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句