一尘不染

JPA(休眠)和自定义表前缀

hibernate

是否可以在JPA / Hibernate中覆盖表名称,以便为所有项目实体添加通用前缀?例如,能够通过“ JBPM5_”前缀为所有JBPM 5表添加前缀。

可接受答案的示例:

public class JBPM5NamingStrategy extends ImprovedNamingStrategy {
   public String classToTableName(String className) {
      return StringHelper.unqualify(className);
   }
   public String propertyToColumnName(String propertyName) {
      return propertyName;
   }
   public String tableName(String tableName) {
      return "JBPM5_" + tableName;
   }
   public String columnName(String columnName) {
      return columnName;
   }
   public String propertyToTableName(String className, String propertyName) {
      return "JBPM5_" + classToTableName(className) + '_'
         + propertyToColumnName(propertyName);
   }
}

阅读 725

收藏
2020-06-20

共1个答案

一尘不染

一次重命名所有表的一种方法是实现自己的namingStrategy(的实现org.hibernate.cfg.NamingStrategy)。

使用的NamingStrategy在persistence.xml中由

<property name="hibernate.ejb.naming_strategy"
          value="com.example.MyNamingStrategy" />
2020-06-20