在Hibernate透视图中生成代码时忽略表前缀

时间:2014-09-20 18:19:11

标签: java eclipse hibernate jboss-tools

我正在使用JBoss Hibernate Perspective来生成JPA实体。 但我的所有表都以tbl_前缀开头。

我正在将代码从PHP YII迁移到Java,并且在YII模型生成器中有一个选项来指定前缀,然后生成的模型没有“tbl”前缀。

我们如何通过Eclipse和Hibernate透视图实现相同的功能,因为截至目前,所有类都是使用Tbl前缀生成的。

1 个答案:

答案 0 :(得分:1)

最简单的方法是在配置中指定表属性:

<class name="User" table="tbl_user" />

如果您使用的是注释:

@Table(name = "tbl_user")
public class User

默认情况下,我们将POJO的名称与表名保持一致。如果您不喜欢通过hibernate命名方案,则可以通过扩展ImprovedNamingStrategy来更改默认行为。正如您所见,ImprovedNamingStrategy实现了NamingStrategy

例如: -

    public class CustomImprovedNamingStrategy extends ImprovedNamingStrategy
{
    @Override
    public String columnName(String columnName)
    {
        return columnName;
    }

    @Override
    public String tableName(String tableName)
    {
        return tableName.replace("tbl_","");
    }
}

创建SessionFactory时应设置CustomImpovedNamingStrategy: -

SessionFactory sessionFactory = new Configuration()
    .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)
    .addFile("Item.hbm.xml")
    .addFile("Bid.hbm.xml")
    .buildSessionFactory(); 

参考:Implementing Naming Strategy

PS:以类似的方式DefaultNamingStrategy可以用来修改Hibernate的默认命名策略。