Hibernate Reverse Engineering - Почему я получаю ID-класс? - PullRequest
0 голосов
/ 06 апреля 2011

Я использую MyEclipse для спящего режима обратного инжиниринга представления в базе данных Oracle.

РЕДАКТИРОВАТЬ: представление имеет шесть столбцов, все типы varchar, без уникальных ключей. Кроме того, я не могу контролировать вид.

Он генерирует три класса:

  • Брокер
  • BrokerID <--- почему? </li>
  • BrokerDAO

Все работает само по себе. Но почему он создает класс ID? Я хотел бы использовать сериализатор JSON для класса Broker, чтобы получить данные и отправить их обратно в браузер с помощью вызова AJAX.

Теперь, когда я сериализуюсь против Брокера, я получаю:

[{
   id: {
     field1: "",
     field2: ""
   }
}, {
   id: {
     field1: "",
     field2: ""
   }
}, {
   id: {
     field1: "",
     field2: ""
   }
}]

вместо того, что я действительно хочу, вот что:

[{
  field1: "",
  field2: ""
}, {
  field1: "",
  field2: ""
}, {
  field1: "",
  field2: ""
}]

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Каждый объект Hibernate нуждается в каком-либо идентификаторе.

Если вы не хотите, чтобы это сгенерированное свойство было включено в ваш вывод JSON, просто отфильтруйте поле. В зависимости от используемой библиотеки JSON вы можете пометить поле с помощью @JsonIgnore или чего-то подобного - обратитесь к документации для библиотеки.

0 голосов
/ 06 ноября 2015

Вы должны войти в свою базу данных и установить поле как ПЕРВИЧНЫЙ КЛЮЧ.

После этого Hybernate-реверс-инжиниринг больше не создает CLASS_ID.java!

...