Я использую Hibernate версии 3.3.2.GA с аннотациями.
У меня есть наследование между двумя классами, первым:
@Entity
@Table(name = "SUPER_CLASS")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name="DISCR_TYPE",
discriminatorType= DiscriminatorType.STRING
)
@org.hibernate.annotations.Entity(mutable = false)
public class SuperClass { }
Подкласс сопоставлен со вторичной таблицей:
@Entity
@DiscriminatorValue("VALUE")
@org.hibernate.annotations.Entity(mutable = false)
@SecondaryTable(name = "V_SECONDARY_TABLE",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "ID", referencedColumnName = "ID"))
public class SubClass extends SuperClass {
@Embedded
public Field getField() {
return getField;
}
}
Где поле состоит из двух разных полей
@Embeddable
public class Field {
@Column("FIELD_1") String field1
@Column("FIELD_2") String field2
}
Теперь, когда я создаю запрос в подклассе, в суперклассе ищутся поля FIELD_1 и FIELD_2, даже еслиопределены в подклассе.
Я не могу установить таблицу в аннотации @Column в поле, потому что класс Field используется где-то повторно.Мне нужно указать его в классе SubClass.
Как указать, что поле следует искать во вспомогательной таблице?
Также на Hibernate Forum