我正在使用JBoss Hibernate Perspective来生成JPA实体。 但我的所有表都以tbl_前缀开头。
我正在将代码从PHP YII迁移到Java,并且在YII模型生成器中有一个选项来指定前缀,然后生成的模型没有“tbl”前缀。
我们如何通过Eclipse和Hibernate透视图实现相同的功能,因为截至目前,所有类都是使用Tbl前缀生成的。
答案 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的默认命名策略。