[英]Exception while mapping generic property in Hibernate entity
我們正在從休眠 XML 遷移到注釋,並且在映射通用屬性后啟動 EAR 時遇到了這個異常。
Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.AppTerminalTypeCriteria.devicePropertiesCriteria
這是與此異常相關的代碼。
AppTerminalTypeCriteria 類中的映射屬性
@javax.persistence.Entity
@Table(name = "TYPE_CRITERIA")
public class AppTerminalTypeCriteria {
//Some fields
@OneToMany(orphanRemoval = true)
@JoinTable(inverseJoinColumns=@JoinColumn(name="APP_CRITERIA_PROPERTY_ID"))
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
private Set<PropertyCriteria<?>> devicePropertiesCriteria = new HashSet<PropertyCriteria<?>>();
}
PropertyCriteria 實體
@Entity(name="PropertyCriteria")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = "PROPERTY_CRITERIA")
@DiscriminatorColumn(name = "PROPERTY_CRITERIA_TYPE", discriminatorType = DiscriminatorType.STRING)
public abstract class PropertyCriteria<T extends Comparable<T>> implements Serializable {
// the rest of the class
}
和 PropertyCriteria 的子類之一
@Entity
@DiscriminatorValue("5")
public class BooleanPropertyCriteria extends PropertyCriteria<Boolean> {
}
這是我們試圖擺脫的 XML 映射
在 AppTerminalTypeCriteria.hbm.xml 中
<set name="devicePropertiesCriteria" inverse="false" cascade="all-delete-orphan">
<cache usage="transactional" />
<key column="APP_CRITERIA_PROPERTY_ID" />
<one-to-many
class="PropertyCriteria"
entity-name="PropertyCriteria" />
</set>
在 PropertyCriteria.hbm.xml 中
<class name="PropertyCriteria" table="PROPERTY_CRITERIA" entity-name="PropertyCriteria">
<discriminator type="string" column="PROPERTY_CRITERIA_TYPE" />
<subclass name="com.emeint.server.core.propertycriteria.BooleanPropertyCriteria" discriminator-value="5" />
如何修復此異常?
錯誤消息清楚地表明該實體未在持久性單元中注冊。 也許您沒有在 persistence.xml 中將此 PropertyCriteria.hbm.xml 列為mapping-file
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.