如何使用hibernate为实体类字段设置动态默认值



我需要在创建实体时通过从相关表中获取值来动态分配值。考虑下面的场景,我有两个班——Student&一批

在创建时在Student表中插入新记录时,我需要通过从Batch表中获取"Active"字段为true的Batch来设置Student表的字段"allocatedBatch"。(考虑到在给定时间只有一个批次可以激活(

这必须动态地进行。请建议我使用hibernate来处理这个问题。

注意-由于这必须在不使用相应的服务和存储库类的情况下完成,因此需要查找hibernate用法

Student.java

public class Student {
@Id
@GeneratedValue(Strategy = GeneratedType.Identity)
private Integer id;
private String name;
private Date DOB;
@ManyToOne
@JoinColumn(name = "Student_Batch", nullable=false)
private Batch allocatedBatch;
.....Getter and setter methods....
}

Batch.java

public class Batch {
@Id
@GeneratedValue(Strategy = GeneratedType.Identity)
private Integer id;
private String name;
private Date startDate;
@ColumnDefault("false")
private boolean Active;
@OneToMany(mappedBy = "allocatedBatch", cascade = {CascadeType.PERSIST, CascadeType.REMOVE)
private Set<Student> students;
.....Getter and setter methods....
}

我不知道你的情况,但听起来你可能需要重新思考你的设计。然而,我认为使用事件侦听器或Interceptor可能会达到目的。(如果我理解正确的话(

检出@PrePersist注释。JPA回调

相关内容

  • 没有找到相关文章

最新更新