使hibernate时,注解 @Transient 的使用

使hibernate时,注解 @Transient 的使用

做开发的时候,前台传来的参数有时候不在同一个实体里面,例如,职位类中包含了部门的属性

这这时候就可以在职位实体类中使用@Transient这个注解,它表示该属性不是一个到数据库表的字段的映射示例代码如下:


@Entity
@Table(name = "sys_post")
public class SysPost {

    @Id
    @Column(name = "post_id")
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid.hex")
    private String postId;

    @Column(name = "post_name")
    private String postName;

    @Transient
    private String departmentId;

    @ManyToOne(targetEntity = SysDepartment.class,fetch = FetchType.EAGER)
    @JoinColumn(name = "department_id",referencedColumnName = "department_id")
    private SysDepartment sysDepartment;
}

这时候该属性是无法添加到数据库的,可以采用如下方法,在职位的controller中注入部门的service,查到部门实体类,再将该部门类赋给职位的属性,即可。


@RestController
@RequestMapping("/sysPost")
public class SysPostController {

    @Autowired
    private ISysPostService iSysPostService;

    @Autowired
    private ISysDepartmentService iSysDepartmentService;
  
    /**
     * 添加、修改职位
     * @param sysPost 职位信息
     * @return 成功失败结果集
     */
    @RequestMapping("insertOrUpdateSysPost")
    public ResponseView insertOrUpdateSysPost(SysPost sysPost){
        String departmentId = sysPost.getDepartmentId();
        SysDepartment sysDepartment = iSysDepartmentService.findById(departmentId);
        sysPost.setSysDepartment(sysDepartment);
        if(sysPost.getPostId()==null || sysPost.getPostId()==""){
            boolean flag = iSysPostService.insertSysPost(sysPost);
            if(flag){
                return ResponseView.success();
            }else {
                return ResponseView.error();
            }
        }else{
            boolean flag = iSysPostService.updateSysPost(sysPost);
            if(flag){
                return ResponseView.success();
            }else {
                return ResponseView.error();
            }
        }
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值