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); } }
一次重命名所有表的一种方法是实现自己的namingStrategy( org.hibernate.cfg.NamingStrategy
实现)。
使用的NamingStrategy在persistence.xml中指定
使用NamingStrategy 。 我以前的答案应该提供你所需要的。
从以前的答案复制:
下面是一个示例NamingStrategy,它为连接表构建TYPE1_TYPE2forms的表名,并为所有表添加一个公共前缀:
public class CustomNamingStrategy extends ImprovedNamingStrategy { private static final long serialVersionUID = 1L; private static final String PREFIX = "PFX_"; @Override public String classToTableName(final String className) { return this.addPrefix(super.classToTableName(className)); } @Override public String collectionTableName(final String ownerEntity, final String ownerEntityTable, final String associatedEntity, final String associatedEntityTable, final String propertyName) { return this.addPrefix(super.collectionTableName(ownerEntity, ownerEntityTable, associatedEntity, associatedEntityTable, propertyName)); } @Override public String logicalCollectionTableName(final String tableName, final String ownerEntityTable, final String associatedEntityTable, final String propertyName) { return this.addPrefix(super.logicalCollectionTableName(tableName, ownerEntityTable, associatedEntityTable, propertyName)); } private String addPrefix(final String composedTableName) { return PREFIX + composedTableName.toUpperCase().replace("_", ""); } }
- @Transactional如何影响Hibernate中的当前会话?
- 通过在某个包中添加所有类,在Hibernate中添加带注释的类。 JAVA
- 使用Oracle序列时,Hibernate不会生成标识符
- 在Spring启动应用程序中未在多个数据库中创建表
- Spring + EntityManagerFactory + Hibernate Listeners + Injection
- FetchMode连接对spring JPA存储库中的ManyToMany关系没有任何区别
- hibernate:创建索引
- 如何在Tomcat中使用Hibernate支持的JPA运行Spring 3.0 PetClinic
- 实现AbstractMultiTenantConnectionProvider