У меня есть абстрактный класс Example
и конкретные подклассы, которые идут вместе с ним. Я использовал дискриминатор для извлечения данных из базы данных, например:
<resultMap id="ExampleResultMap" class="Example">
<discriminator column="stateCode" javaType="java.lang.String">
<subMap value="AL" resultMap="AlabamaStateResultMap"/>
<subMap value="AR" resultMap="ArkansasStateResultMap"/>
[...]
</discriminator>
</resultMap>
<resultMap extends="ExampleResultMap"
id="AlabamaStateResultMap"
class="AlabamaState"/>
<resultMap extends="ExampleResultMap"
id="ArkansasStateResultMap"
class="ArkansasState"/>
[...]
Таким образом, у меня есть объект AlabamaState
(подкласс абстрактного объекта Example
) без каких-либо атрибутов на нем. Это надумано, но суть в том, что у меня нет атрибута, однозначно определяющего тип объекта - и нет никаких причин, по которым я бы стал, если бы не этот случай.
( Примечание : классы не пусты, они поведенческие , поэтому их рефакторинг не существует) не вариант.)
Как мне сохранить его обратно в базу данных?
В идеале должен быть Дискриминатор
для ParameterMap
s, но, похоже, его нет.
Насколько я могу судить , есть ряд нежелательных решений, среди них:
AL
. (Обратите внимание, что я изо всех сил старался избежать необходимости в этом во всем моем коде, поэтому имел this = ООД-поражение.) Скорее всего, я выберу первый вариант , но это кажется довольно нелепым, не правда ли? Если iBatis может его создать, разве он не сможет его сохранить? Что мне действительно нужно, так это дискриминатор для вставки.
Мне не повезло, или я просто упускаю из виду что-то очевидное?