2 つの具体的なサブクラスを定義する抽象エンティティ クラスを作成しました。
@Entity(name="Zone")
@DiscriminatorColumn(name="type",
discriminatorType=DiscriminatorType.STRING,
length=10)
@Table(name="grZones")
public abstract class ZoneEntity extends AbstractEntity {
@Id
public String getIdent() ...
@Entity(name="RootZone")
@DiscriminatorValue(value="root")
public static class RootZone extends ZoneEntity { ... }
@Entity(name="Subzone")
@DiscriminatorValue(value="subzone")
public static class Subzone extends ZoneEntity { ... }
}
そして、抽象ゾーン クラスを参照する別のクラス:
@Entity(name="Device")
@Table(name="grDevices")
public class DeviceEntity {
public DeviceEntity() { }
@Id
@XmlTransient
public Long getID() { ... }
@JoinColumn(name = "parent", updatable = true, nullable = false)
public ZoneEntity getParent() { ... }
}
展開タイプ (Jboss-7.1.1) で、次の例外が発生します。
Caused by: org.hibernate.MappingException: Could not determine type for: com.graphicreports.amun.habitat.ZoneEntity, at table: grDevices, for columns: [org.hibernate.mapping.Column(parent)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:304)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:288)
at org.hibernate.mapping.Property.isValid(Property.java:216)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:467)
これを機能させるためにどこかに追加する必要がある注釈はありますか、それともデータベース構造を再考する必要がありますか?
どうもありがとうスティーブ