Java 如何使用hibernate拦截器填充联接表中的额外字段?

Java 如何使用hibernate拦截器填充联接表中的额外字段?,java,hibernate,orm,Java,Hibernate,Orm,我有一个遗留对象模型,其中包含内容对象和一个表,该表用于表示内容对象之间的关系。后者称为content\u content\u connections表,除了具有from和to内容的主键外,它还包含3个其他字段。“连接类型”字段以及“发件人”和“收件人”内容的“内容类型id”字段。因此,在contentcbject中,一种特殊类型的连接可能被注释为 @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "content_content_con

我有一个遗留对象模型,其中包含内容对象和一个表,该表用于表示内容对象之间的关系。后者称为content\u content\u connections表,除了具有from和to内容的主键外,它还包含3个其他字段。“连接类型”字段以及“发件人”和“收件人”内容的“内容类型id”字段。因此,在contentcbject中,一种特殊类型的连接可能被注释为

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "content_content_connections", joinColumns = { @JoinColumn(name = "CONTENT_ID1") }, inverseJoinColumns = { @JoinColumn(name = "CONTENT_ID2") })
@WhereJoinTable(clause = "connection_type_id=1108")
getFoos() { ... }

目前,这是一个只读映射,除了where子句之外,它会忽略额外的列。如果我希望将其更改为读/写映射,是否有方法在不将联接表升级为映射类型的情况下执行此操作?换句话说,我可以使用hibernate拦截器在保存时填充联接表中未显式映射的其他列吗

最好实现SaveOrUpdateEventListener,而不是拦截器

请确保以以下方式添加SaveOrUpdateEventListener:

private void initSaveOrUpdateEventListenerHook(Configuration config) {
    List<SaveOrUpdateEventListener> l = new ArrayList<SaveOrUpdateEventListener>();
    SaveOrUpdateEventListener[] listeners =
            config.getEventListeners().getSaveOrUpdateEventListeners();
    l.add(new SaveOrUpdateEventListenerHook());
    l.addAll(Arrays.asList(listeners));
    SaveOrUpdateEventListener[] newListeners = l.toArray(new SaveOrUpdateEventListener[l.size()]);
    config.getEventListeners().setSaveOrUpdateEventListeners(newListeners);
}
private void initSaveOrUpdateEventListenerHook(配置){
列表l=新的ArrayList();
SaveOrUpdateEventListener[]侦听器=
config.getEventListeners().getSaveOrUpdateEventListeners();
l、 添加(新的SaveOrUpdateEventListenerHook());
l、 addAll(Arrays.asList(listeners));
SaveOrUpdateEventListener[]newListeners=l.toArray(新的SaveOrUpdateEventListener[l.size()]);
config.getEventListeners().setSaveOrUpdateEventListeners(newListeners);
}