Ленивое отображение с помощью инструментов гибернации?

У меня есть две таблицы A и B в моей базе данных. В таблице B у меня есть ссылка на таблицу A целым числом idA. (idA — это внешний ключ для B). Когда я выполняю обратное проектирование с помощью инструментов hibernate, я генерирую два объекта Java.

public class A{
  int id;
} 

и

public class B{
  int id;
  A a;
} 

Но я хочу иметь

public class B{
  int id;
  int idA;
}  

Как я могу это сделать?

Спасибо,


person Mouna    schedule 19.05.2014    source источник


Ответы (2)


Поэтому я нашел решение: создать собственный ReverseEngineeringStrategy и изменить возврат метода excludeForeignKeyAsManytoOne на true.

public class MyReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {

    public MyReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
        super(delegate);
    }

    @Override
    public boolean excludeForeignKeyAsManytoOne(String keyname, TableIdentifier fromTable, List fromColumns, TableIdentifier referencedTable, List referencedColumns) {
        return true;
                }

}
person Mouna    schedule 19.05.2014

Я думаю, для этого вам нужно обновить свой класс вручную, а затем удалить любые аннотации @OneToOne или аналогичные теги в отображении XML.

По умолчанию Hibernate предлагает вам сопоставить объект, чтобы вы могли использовать его сразу, без необходимости извлекать его явно.

person Alexey Malev    schedule 19.05.2014