質問

I override the default strategy of reverse engineering in hibernate.

public class MyReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {   
    public MyReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
        super(delegate);
    }

    @Override
    public String columnToPropertyName( TableIdentifier table, String column) {
        return column;
    }
    @Override   
    public String tableToClassName( TableIdentifier table){
        return table.getName();
    }
}

The problem is that classes are generated in a default package and not in the package name I specified. If I delete the tableToClassName method, classes are generated in the package right package.

Any explanations?
Thanks.

役に立ちましたか?

解決

I did find a solution in this link. In fact when I override tableToClassName I must specify the full name of the class, i.e with the package.

I tried the solution suggested in the link and it works. Here my new MyReverseEngineeringStrategy class:

public class MyReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {

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

    @Override
    public String columnToPropertyName( TableIdentifier table,
                                        String column) {
        return column;
    }

    @Override
    public String tableToClassName(TableIdentifier tableIdentifier) {
        final String defaultClassName = super.tableToClassName(tableIdentifier);
        final String packageName = this.extractPackageName(defaultClassName);
        final String className = tableIdentifier.getName();
        final String concatedString = packageName.concat(className);
        return concatedString;
    }

    private String extractPackageName(String defaultClassName) {
        int lastIndex = defaultClassName.lastIndexOf(".");
        final String packageName = defaultClassName.substring(0, lastIndex + 1);
        return packageName;
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top