在Hibernate envers中,在多对一关系实体中处理审核修订的最佳方法是什么?
我有两个实体BusinessUnit.java和BusinessPartner.java,还有一个连接实体BusinessUnitPartnerMap.java在Hibernate envers中,在多对一关系实体中处理审核修订的最佳方法是什么?,hibernate,hibernate-envers,Hibernate,Hibernate Envers,我有两个实体BusinessUnit.java和BusinessPartner.java,还有一个连接实体BusinessUnitPartnerMap.java @Entity @Audited public class BusinessUnit { private int id; private String unitName; private String description; private String status; @OneToMany(mappedBy = "busines
@Entity
@Audited
public class BusinessUnit {
private int id;
private String unitName;
private String description;
private String status;
@OneToMany(mappedBy = "businessPartner", cascade = CascadeType.ALL, orphanRemoval = true)
private List<BusinessPartnerUnitMap> businessPartnerUnitMaps;
}
@Entity
@Audited
public class BusinessPartner {
private int id;
private String partnerName;
private String details;
private String status;
@OneToMany(mappedBy = "businessPartner", cascade = CascadeType.ALL, orphanRemoval = true)
private List<BusinessPartnerUnitMap> businessPartnerUnitMaps;
}
@Entity
@Audited
public class BusinessPartnerUnitMap {
private int businessPartnerUnitMapId;
@ManyToOne
@JoinColumn(name = "business_partner_id")
private BusinessPartner businessPartner;
@ManyToOne
@JoinColumn(name = "business_unit_id")
private BusinessUnit businessUnit;
}
@实体
@审计
公营部门{
私有int-id;
私有字符串单元名;
私有字符串描述;
私有字符串状态;
@OneToMany(mappedBy=“businessPartner”,cascade=CascadeType.ALL,orphan=true)
私人名单businessPartnerUnitMaps;
}
@实体
@审计
公营业务伙伴{
私有int-id;
私有字符串名称;
私有字符串详细信息;
私有字符串状态;
@OneToMany(mappedBy=“businessPartner”,cascade=CascadeType.ALL,orphan=true)
私人名单businessPartnerUnitMaps;
}
@实体
@审计
公共类BusinessPartnerUnitMap{
私人int businessPartnerUnitMapId;
@许多酮
@JoinColumn(name=“业务\合作伙伴\ id”)
私人业务伙伴业务伙伴;
@许多酮
@JoinColumn(name=“业务单位id”)
私人业务单位业务单位;
}
在更新业务伙伴时,我使用的是业务单元DAO,仅加载业务单元id和单元名称
由于business\u unit\u aud表中除了id和unitName之外,所有值都插入null,因为BusinessUnitPartnerMap
是否有任何方法可以在更新业务伙伴时不加载业务单位对象而在业务单位aud表中插入数据?我的理解是您正在维护@manytomy关系。如果你换成
@Entity
@Audited
public class BusinessPartner {
@ManyToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
@JoinTable(
name = "BusinessUnit",
joinColumns = { @JoinColumn(name = "business_partner_id") },
inverseJoinColumns = { @JoinColumn(name = "business_unit_id")
})
private List<BusinessPartnerUnit> businessPartnerUnits;
}
@实体
@审计
公营业务伙伴{
@ManyToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY)
@可接合(
name=“BusinessUnit”,
joinColumns={@JoinColumn(name=“business\u partner\u id”)},
inverseJoinColumns={@JoinColumn(name=“business\u unit\u id”)
})
私人名单业务伙伴单位;
}
使用延迟初始化,您不必加载引用的数据,也不会将其替换为null;@ManyToMany将允许您在没有额外实体的情况下保持关系。
如果这没有帮助,我需要知道如何在BusinessUnitDAO中加载实体我的理解是,您正在维护@manytomy关系。如果你换成
@Entity
@Audited
public class BusinessPartner {
@ManyToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
@JoinTable(
name = "BusinessUnit",
joinColumns = { @JoinColumn(name = "business_partner_id") },
inverseJoinColumns = { @JoinColumn(name = "business_unit_id")
})
private List<BusinessPartnerUnit> businessPartnerUnits;
}
@实体
@审计
公营业务伙伴{
@ManyToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY)
@可接合(
name=“BusinessUnit”,
joinColumns={@JoinColumn(name=“business\u partner\u id”)},
inverseJoinColumns={@JoinColumn(name=“business\u unit\u id”)
})
私人名单业务伙伴单位;
}
使用延迟初始化,您不必加载引用的数据,也不会将其替换为null;@ManyToMany将允许您在没有额外实体的情况下保持关系。
如果这没有帮助,我需要知道如何在BusinessUnitDAO中加载实体仅加载业务单元id和unitName。我不太明白你在这里的意思。您需要添加相关代码,即加载、修改和保存实体的代码。仅加载业务单元id和单元名称。我不太明白你在这里的意思。您需要添加相关代码,即加载、修改和保存实体的代码。