Сбой JVM при использовании любой другой стратегии наследования Hibernate, кроме SINGLE_TABLE - PullRequest
4 голосов
/ 02 июля 2011

Хорошо, это, вероятно, длинный снимок, но здесь идет.

В Java (JRE 1.6.0_26-b03) у меня есть два класса, SuperControl и его подкласс SubControl. Они оба должны быть постоянными объектами, и я использую аннотации Hibernate для достижения этой цели. У меня есть приблизительно 210 классов, которые сохраняются правильно. За исключением одного.

Моя проблема в том, что SubControl отказывается наследовать каким-либо образом, кроме SINGLE_TABLE. Когда я говорю «отказывается», я имею в виду, что весь JRE падает .

Это немного проблематично, потому что я действительно предпочел бы, чтобы SuperControl был отображенным суперклассом SubControl. SuperControl также может быть самостоятельной сущностью. Странно то, что у меня есть точно параллельная иерархия в моем коде в другом месте, которая работает правильно.

Вот что я хочу:

@Entity
@MappedSuperclass
public class SuperControl extends ItsSuperClass {
  // ...
}

@Entity
public class SubControl extends SuperControl {
  // ...
}

но бомбит с ошибкой

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (c1_Optimizer.cpp:271), pid=5456, tid=1260
#  guarantee(x_compare_res != Constant::not_comparable) failed: incomparable constants in IfOp
#
# JRE version: 6.0_26-b03
# Java VM: Java HotSpot(TM) Client VM (20.1-b02 mixed mode, sharing windows-x86 )
# An error report file with more information is saved as:
# C:\eclipse\hs_err_pid5456.log

Без предоставления подсказки о наследовании Hibernate по умолчанию равен SINGLE_TABLE (что я могу сказать благодаря созданию столбца DTYPE). Я могу явно указать это без сбоя JVM.

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class SuperControl extends ItsSuperClass {
  // ...
}

@Entity
public class SubControl extends SuperControl {
  // ...
}

Хуже всего то, что если я удаляю класс SubControl ПОЛНОСТЬЮ или даже просто его отображение в файле hibernate.cfg.xml, JVM все равно падает. Это наводит меня на мысль, что между SuperControl и SubControl существует какая-то скрытая связь. Может быть, что-то кешируется в Eclipse или тому подобное. Я перезапустил Eclipse, сделал несколько сборок и даже перезапустил мою машину, и проблема все еще остается.

Есть идеи? Я работал над этим часами и ничего не получил.

Спасибо!

Ответы [ 2 ]

6 голосов
/ 02 июля 2011

Это похоже на ошибку 7042153 , она же 2210012 , о которой сообщалось в начале мая.

Обратите внимание на обходной путь, предложенный одним пользователем: для него исправлена ​​опция JVM "-server".

3 голосов
/ 02 июля 2011

Попробуйте Java 1.6.0_20 и проверьте, работает ли это. Вы обнаружили ошибку JVM, и для ее запуска может потребоваться возврат 6 минорных версий.

Вам повезло в том, что эта ошибка воспроизводима, поэтому создайте минимальный тестовый сценарий и опубликуйте его в базе данных ошибок Oracle.

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