跳坑:Hibernate 5.4.1的@Transient注解在一对多多对一的条件下的注意事项

本文介绍了在使用Hibernate 5.4.1时,@Transient注解在一对多多对一关联关系中的使用注意事项。当在Emp实体类的多对一关系中使用@Transient注解后,若在Dept实体类的一对多关系中未添加此注解,会导致报错。解决这个问题的关键在于理解@Transient在关联映射中的作用,即标记不需要持久化的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分别有两个类Dept(部门)和Emp(员工)
Dept中有多个Emp对象的集合(一对多),一个部门可以有多个员工
Emp中有一个Dept的对象(多对一),一个员工只属于一个部门

Emp实体类中属性如下:

	/**
	* 员工中部门的对象
	*/
    @Transient//用于忽略不需要持久化到数据库中的属性 **注意该属性**
    @ManyToOne(fetch =FetchType.LAZY)
    @JoinColumn(name="DEPTNO")
    private Dept dept;

    public Dept getDept() {
        return dept;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }

Dept中属性如下:

	/**
     * 部门中员工的集合
     */
    @Transient  //**注意该属性**
    @OneToMany(mappedBy = "dept",cascade = {CascadeType.ALL})
    //@JoinColumn(name="DEPTNO")
    private Set<Emp> emps=new HashSet<Emp>();

    public Set<Emp> getEmps() {
        return emps;
    }

    public void setEmps(Set<Emp> emps) {
        this.emps = emps;
    }

@Transient表示用于忽略不需要持久化到数据库中的属性。
这个注解在进行关联的时候,如果在多对一方(Emp)加了该注解在一对多方(Dept)中则必须添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值