Первичные ключи идентификатора Hibernate noop

Я пытаюсь сохранить таблицу, используя XML-файл сопоставления hibernate с полем id, установленным как access="noop". Я делаю это, потому что не хочу, чтобы поле первичного ключа было в файле класса. Классы, которые я сохраняю, взяты из сторонней библиотеки, и если я их изменю, это станет кошмаром обслуживания при обновлении сторонней библиотеки. Я надеялся, что смогу сохранить отношения между объектами, не изменяя файлы классов Java.

i.e.

<hibernate-mapping>
<class name="blah" table="blah">
        <id name="blah_id" type="long" access="noop" >
            <column name="BLAH_ID" />
            <generator class="native" />
        </id>
        <property name="value" type="double">
            <column name="VALUE" />
        </property>
</class>
</hibernate-mapping>

К сожалению, это не совсем работает, спецификатор доступа noop запрашивает, чтобы спящий режим никогда не обращался к полю, но спящий режим все еще пытается записать туда значение, когда функция сохранения возвращается, вызывая следующую ошибку:

идентификатор экземпляра Third.Party.object был изменен с 2 на null

Я мог бы написать обертку для библиотек третьей части, наследуя все классы и добавляя поля для отношений, но я очень надеялся на лучшее решение.

Кажется разумным не пускать pks в классы. Как я могу это сделать?

Любые идеи?


person user1245483    schedule 02.03.2012    source источник


Ответы (1)


Я думаю, что классы компонентов - это то, что вы ищете раньше.

person user1245483    schedule 03.03.2012