0

有很多信息和示例如何使用@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. 用户加载帐户我有兴趣访问相应的日历集合。
  2. 以下1.通过日历我只需要知道Account (对于当前用户,如果Calendar与其他Account有很多关系并不重要)。
  3. 删除Account所有Calendar应该被级联删除。
  4. 如果它是日历的最后一个帐户,则应在帐户删除时间激活日历的级联删除
  5. 将日历添加到帐户所有日历应以级联方式添加。
  6. 5.限制只应为之前为其他Account保留的日历添加链接。

问题

我可以在 Spring 服务中实现所有这些案例处理程序。但我相信这个问题可以在休眠级别解决,并且我相信必须以最优雅的方式实现该解决方案。因此,请帮助我处理或建议我以最佳方式管理这种情况(一些休眠注释或其他工具)。

4

0 回答 0