1

I have two tables A and B in my database. I the table B I have a reference to the table A by an Integer idA. (idA is a foreign key for B) When I do reverse engineering using hibernate-tools, I generate two Java objects.

public class A{
  int id;
} 

and

public class B{
  int id;
  A a;
} 

But I want to have

public class B{
  int id;
  int idA;
}  

How can I do this?

Thanks,

Mouna
  • 3,221
  • 3
  • 27
  • 38

2 Answers2

1

So I found a solution: create a custom ReverseEngineeringStrategy and change the return of excludeForeignKeyAsManytoOne method to 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;
                }

}
Mouna
  • 3,221
  • 3
  • 27
  • 38
0

I think for this you have to update your class manually and then remove any @OneToOne annotations or similar tags in XML mapping.

By default, Hibernate suggests you to have entity mapped so you can use at once, without having to fetch it explicitly.

Alexey Malev
  • 6,408
  • 4
  • 34
  • 52