Я использую Hibernate версии 3.3.2.GA с аннотациями.Hibernate: @EmbeddedId, Inheritance и @SecondaryTable
меня есть наследование между двумя классами, бывшее:
@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
}
Теперь, когда я создаю запрос на SubClass, поля FIELD_1 и FIELD_2 просматриваются на Su perClass, даже если они определены в подклассе.
Я не могу установить таблицу в аннотации @Column в поле, потому что класс Field, который он где-то повторно использовал. Мне нужно указать его в классе SubClass.
Как указать, что поле должно быть просмотрено во вторичной таблице?
Также на Hibernate Forum
Благодарим вас за ответ. Не могли бы вы дать мне другое предложение, к сожалению, я забыл указать одну часть? Я не могу просто поместить атрибут table в аннотацию @Column, поскольку он повторно используется в другом классе. Еще раз спасибо –
@volothamp См. ** ОБНОВЛЕНИЕ ** –