Hibernate Начальное создание SessionFactory не удалось - PullRequest
4 голосов
/ 15 июня 2010

Я пытаюсь использовать hibernate, чтобы заполнить мой JSF selectonemenu в ApplicationBean (в Liferay). Проблема в том, что у меня начальная SessionFactory ошибка создания. Прежде чем поместить свои функции в приложение, я установил их в сеансе, и у меня не было ошибок.

На данный момент полная ошибка

Initial SessionFactory creation failed. 
java.lang.ClassCastException: org.hibernate.type.StringType cannot be cast to org.hibernate.type.VersionType

Ответы [ 2 ]

8 голосов
/ 15 июня 2010

Скорее всего, у вас где-то есть столбец VARCHAR с именем VERSION, и инструмент обратного инжиниринга Hibernate генерирует его как:

<version name="version" type="string">
    <column name="VERSION" length="20" />
</version>

вместо:

<property name="version" type="string">
    <column name="VERSION" length="20" />
</property>

Первый -неправильно.Во-первых, я думаю, что это не то, что вы хотите.Во-вторых, не допускается строка для поля версии, как указано в главе 5.1.9.Версия (необязательно) :

Номера версий могут быть спящего типа long, integer, short, timestamp или calendar.

Эта проблема была каким-то образом описана в HHH-3002 (на самом деле ее следует назначать инструментам Hibernate, а не Hibernate Core), и я вижу два способа ее решения.Либо

  • исправьте сопоставление вручную
  • , переименуйте столбец во что-то другое.
1 голос
/ 15 июня 2010

Свойство одного из классов вашего домена, которое вы указали в качестве версии класса, имеет тип string. Это недопустимый тип для версии. Что изменит его, будет зависеть от того, как вы реализуете управление версиями в своей базовой базе данных.

...