表grpUsuario
@Id
@Basic(optional = false)
@NotNull
@Column(name = "grupo")
private Integer grupo;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 64)
@Column(name = "descripcion")
private String descripcion;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "secLevel")
private Collection<Menu> menuCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "grupo", orphanRemoval = true)
private Collection<Usuario> usuarioCollection;ç
表Usuario
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 64)
@Column(name = "IdUsuario")
private String idUsuario;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 64)
@Column(name = "password")
private String password;
@Size(max = 16)
@Column(name = "nombres")
private String nombres;
@Size(max = 24)
@Column(name = "apellidos")
private String apellidos;
// @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Correo electrónico no válido")//if the field contains email address consider using this annotation to enforce field validation
@Size(max = 64)
@Column(name = "email")
private String email;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idUsuario")
private Collection<Encuesta> encuestaCollection;
@JoinColumn(name = "grupo", referencedColumnName = "grupo" )
@ManyToOne(optional = false)
private Grpusuario grupo;
控制器
String cod = request.getParameter("cod");
Usuario usuario= new Usuario(cod);
boolean resultado = usuario_servicio.delete(usuario);
删除功能
public boolean delete(Usuario usuario){
Session session = HibernateUtil.openSession();
Transaction tx = null;
try {
tx = session.getTransaction();
tx.begin();
session.delete(usuario);
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
return true;
}
这是我的代码,但我没有删除记录。这个相同的代码我尝试过有关系的表,如果有效,我应该做些什么来帮我删除子记录?
答案 0 :(得分:0)
您可以使用SQL更新注册表和以后删除。
答案 1 :(得分:0)
正如评论中所讨论的:实体需要在Hibernate的持久化上下文中才能正确删除它。所以解决方案是首先使用Hibernate获取它。
替换
session.delete(usuario);
与
session.delete(session.get(Usuario.class, usuario.getIdUsuario()));
注意:如果实体不在数据库中,get()
可以返回null
值,因此在将对象传递给delete
之前,最好先检查一下。