Допустим, у меня есть граф наследования, в котором базовый класс расширяет сопоставленный суперкласс:
component name="Entity" mappedSuperClass="true"
{
property name="CreatedOn";
}
component name="Pet" extends="Entity" table="Pet" discriminatorcolumn="pet_type"
{
property name="PetId" fieldtype="id" generator="native";
property name="Name";
}
component name="Dog" extends="Pet" table="Pet" discriminatorvalue="Dog"
{
property name="FavoriteFood";
}
component name="Cat" extends="Pet" table="Pet" discriminatorvalue="Cat"
{
property name="FavoriteSleepingSpot";
}
В этом случае у меня есть базовый класс Pet
с двумя подклассами, Dog
и Cat
. Pet
также расширяет Entity
, что обеспечивает некоторые свойства аудита.
В ColdFusion 9.0.1 и ColdFusion 9.0.1 Исправление 1 , эти компоненты сопоставлены правильно. Я подтвердил это, сбросив отображения HBM. Однако в ColdFusion 9.0.1 HotFix 2 сопоставления неверны. Например, отображение Cat
должно быть:
<hibernate-mapping>
<subclass discriminator-value="Cat"
entity-name="Cat" extends="cfc:model.Pet"
lazy="true" name="cfc:model.Cat">
<property name="FavoriteSleepingSpot" type="string">
<column name="FAVORITE_SLEEPING_SPOT"/>
</property>
</subclass>
</hibernate-mapping>
Но что на самом деле генерируется, так это:
<hibernate-mapping>
<subclass discriminator-value="Cat"
entity-name="Cat" extends="cfc:model.Pet"
lazy="true" name="cfc:model.Cat">
<property name="FavoriteSleepingSpot" type="string">
<column name="FAVORITE_SLEEPING_SPOT"/>
</property>
<property name="CreatedOn" type="timestamp">
<column name="CREATED_ON"/>
</property>
</subclass>
</hibernate-mapping>
Другими словами, отображение подкласса включает CreatedOn
в класс Entity
, когда этого не должно быть, и это понятно приводит к следующей ошибке:
Повторяющийся столбец в сопоставлении для сущности: Столбец Cat: CREATED_ON (должен отображаться с помощью insert = "false" update = "false")
Мой вопрос , что-то не так с тем, как объявляются мои сущности? Или я наткнулся на ошибку в Hotfix 2 ? Если так, что бы исправить это?
Обходной путь, который я использую в настоящее время, - это сбросить файлы HBM и отредактировать их вручную, чтобы удалить дублированное отображение свойств. Это работает нормально, но я должен повторять этот процесс каждый раз, когда сущности меняются. К сожалению, мы не можем откатиться и до Hotfix 1, потому что нам нужны некоторые исправления в Hotfix 2.