我試圖將兩個有序的集合一對多的字段映射到相同的值。這些字段有不同的過濾要求。所以一個領域會有物品被過濾掉。休眠:如何讓兩個收集字段指向相同的對象
以下是實體的相關部分。
public class OptionValueSet extends ConfigurationDomainObject {
...
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = OPTION_VALUE_SET_ID_COLUMN, nullable = false)
@IndexColumn(name = "option_index", nullable = false)
@Where(clause = OBSOLETE_FILTER)
private final List<OptionValue> allOptions = new java.util.ArrayList<OptionValue>();
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = OPTION_VALUE_SET_ID_COLUMN, nullable = false, insertable = false, updatable = false)
@IndexColumn(name = "option_index", nullable = false)
@Where(clause = OBSOLETE_FILTER + " AND disabled = '0'")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Immutable
private final List<OptionValue> options = new java.util.ArrayList<OptionValue>();
...
}
和異常
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: com.casenet.domain.configuration.screen.OptionValue column: option_value_set_id (should be mapped with insert="false" update="false") at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:670) at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:692) at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:714) at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:468) at org.hibernate.mapping.RootClass.validate(RootClass.java:215) at org.hibernate.cfg.Configuration.validate(Configuration.java:1135) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1320) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669) ... 137 more
對於好奇,我在解開正在使用同一個Hibernate場兩個用例的過程。目前,過濾器已打開,其中一個隱藏了禁用的OptionValues,留在另一個編輯它們。但是,@Filter註釋會干擾緩存。我必須在不更改底層數據庫模式的情況下修復此問題在發佈週期中我們太晚了,沒有做任何更激進的事情。
我遇到了一個類似的問題,我試圖創建三個單獨的列表,每個列表在春季休眠應用程序中都有相同對象類型的不同過濾器。你有一點時間來幫助我找出解決方案嗎?問題是在這個鏈接:http://stackoverflow.com/questions/20292152/parameterizing-object-properties – CodeMed