- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 spring 和 angular7 开发一个网络应用程序。我注意到正在发生一些事情...我有通用的 DAO 和通用服务来执行 CRUD 操作。当我删除具有 X id 的用户时(例如,但所有实体都会发生这种情况),具有 X id 的用户类型也会被删除!但该用户类型不是我要删除的用户的用户类型。
我想删除该用户:
User {id: 5, name: hector, pass: blabla, id_user_type: {id: 2, desc: Admin}}
服务器删除了该用户,并且该用户类型的 id 为 5 --> 用户类型{id: 5, desc: Anonymous}
我在 phpmyadmin 中检查了“删除时设置为空”和“更新级联时”,并且设置正确。
我调试了通用删除 DAO 方法,它仅被调用一次。
我认为这是 hibernate 的问题,我应该指定只想删除我在方法上指定的对象,而不是他的子对象。
通用删除 dao:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Override
public <T> String delete(final T o) {
sessionFactory.getCurrentSession().delete(o);
return "Deleted";
}
实体:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.SecondaryTable;
import javax.persistence.SecondaryTables;
import javax.persistence.Table;
import org.hibernate.annotations.DynamicUpdate;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.sun.istack.NotNull;
@Entity()
@Table(name="usuario")
@SecondaryTables({
@SecondaryTable(name = "tipo_usuario", pkJoinColumns = { @PrimaryKeyJoinColumn(name = "id") })
})
@DynamicUpdate(value=true)
public class UsuarioBean {
...
@ManyToOne()
@JoinColumn(name = "id_tipo_usuario")
@NotNull
private TipoUsuarioBean id_tipo_usuario;
...
}
我只想删除该用户,然后 hibernate 删除 user(id=14) 行和 user_type(id=14) 行:
最佳答案
我不明白为什么当您可以控制应用程序时使用辅助表注释更好的设计是创建单独的实体,然后使用多对一注释映射它们,就像辅助表一样,我的猜测是其执行操作的默认行为主表反射(reflect)在辅助表中。
关于java - Hibernate删除user和user_type而不是只删除user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56313185/
我为商店用户、学生和考官创建了 3 个表。 用户表包含登录详细信息 id name email password user_type (3 user types: 1 - administrators
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 3 年前。 Improve
我是一名优秀的程序员,十分优秀!