有很多信息和示例如何使用@ManyToMany
,这部分总体上很清楚。我还没有找到适合我的案例的优雅解决方案。我知道如何使用变通方法,但我希望任何人都知道并可以分享应该使用的优雅解决方案或想法..
收入明细:
账户表
@Entity
@Table(name = "account_table")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "account_seq_gen")
@SequenceGenerator(name = "account_seq_gen", sequenceName = "ACCOUNT_SEQ")
private Long id;
@ManyToMany(cascade = CascadeType.REMOVE)
@JoinTable(name = "account_calendar_relation",
joinColumns = @JoinColumn(name = "account_id"),
inverseJoinColumns = @JoinColumn(name = "calendar_id")
)
private List<Calendar> calendars = new ArrayList<>();
//...
}
与日历有关
@Entity
@Table(name = "calendar")
public class Calendar {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "calendar_seq_gen")
@SequenceGenerator(name = "calendar_seq_gen", sequenceName = "CALENDAR_SEQ")
private Long id;
@ManyToMany(mappedBy = "calendars")
private List<Account> accounts;
//...
}
多对多。_
特殊限制
加载帐户信息我想访问所有映射的日历(对于该帐户),但我不想通过该帐户访问映射在任何已访问日历上的所有帐户。我需要模拟一些特殊行为的情况:
- 为用户加载帐户我有兴趣访问相应的日历集合。
- 以下1.通过日历我只需要知道Account (对于当前用户,如果Calendar与其他Account有很多关系并不重要)。
- 删除Account所有Calendar应该被级联删除。
- 如果它是日历的最后一个帐户,则应在帐户删除时间激活日历的级联删除。
- 将日历添加到帐户所有日历应以级联方式添加。
- 5.限制只应为之前为其他Account保留的日历添加链接。
问题
我可以在 Spring 服务中实现所有这些案例处理程序。但我相信这个问题可以在休眠级别解决,并且我相信必须以最优雅的方式实现该解决方案。因此,请帮助我处理或建议我以最佳方式管理这种情况(一些休眠注释或其他工具)。