Возможно ли для Hibernate использовать класс без c'tor по умолчанию в качестве компонента или составного элемента? - PullRequest
1 голос
/ 09 июня 2011

Мне нужно использовать несколько устаревших классов в Hibernate.Один из классов не имеет конструктора по умолчанию, поэтому я получаю сообщение об ошибке «org.hibernate.InstantiationException: Нет конструктора по умолчанию для entity: ..».Мне не нужно упорствовать этот класс напрямую.Вот отображение:

<class name="test.geo.support.Observation" table="observation">
        <id access="property" column="obs_msg" name="EncodedObMsg" type="string"/>
                <property name="ReportTime" column="report_time" type="long" />
                <many-to-one name="Station" column="station_id" class="test.geo.Station"/>
    </class>
    <class name="test.geo.Station" table="station">
        <id access="property" column="station_id" name="UniqueId" type="string" />
                <component name="Point" class="test.geo.geometry.PointGeometry">
                    <property name="latitude" type="double" access="field" column="lat" />
                    <property name="longitude" type="double" access="field" column="lon" />
                </component>
    </class>

Мне нужно сохранить «Наблюдение» и «Станция», и я хочу сослаться на класс «PointGeometry», чтобы сохранить Station.Point.Есть ли способ осуществить это с помощью PointGeometry без конструктора по умолчанию?

Ответы [ 3 ]

2 голосов
/ 09 июня 2011

Вам всегда понадобится конструктор без аргументов. Если мне действительно не нравится, чтобы мой код вызывал конструктор arg, я делаю это protected.

1 голос
/ 09 июня 2011

Нет, вам нужен конструктор без аргументов.Hibernate нужен способ создания объектов.

Возможно, вы сможете создать подкласс этого класса и дать этому подклассу конструктор без аргументов.

0 голосов
/ 17 ноября 2016

Нет.Это требование JPA.В Hibernate вы можете реализовать Interceptor, который заполняет объект по своему усмотрению.См .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...