我想更改我的 Schema 生成的外键列的名称。以下是我正在使用的架构配置:
<xs:complexType name="ActivityFact">
<xs:sequence>
<!-- Other Element Declaration -->
</xs:sequence>
<xs:attribute name="id" type="xs:long" />
</xs:complexType>
当我运行此配置时,我得到了 2 个表:1. ActivityDim 2. ActivityFact(ActivityDim Id 作为外键,名称为 activityDim_ActivityFact_Id)
我想将上面生成的名称更改为在这种情况下为 actvitiyDim 的架构元素名称。我不确定如何使用自定义命名策略。我试图覆盖 foreignKeyColumnName 方法,但没有奏效
public class ForeignKeyNamingStrategy extends ImprovedNamingStrategy {
private final static Logger logger = LoggerFactory.getLogger(ForeignKeyNamingStrategy.class);
@Override
public String foreignKeyColumnName(
String propertyName, String propertyEntityName, String propertyTableName, String referencedColumnName
) {
return propertyName;
}
我还在我的 persistence.xml 中给出了这个类的引用
<persistence version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd
http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<persistence-unit name="reportingData">
<!-- These properties are defined in persistence-model/src/main/resources/persistence.xml.
HyperJAXB3 merges them into its generated and final persistence.xml -->
<properties>
<property name="hibernate.ejb.naming_strategy"
value="com.namingStrategy.ForeignKeyNamingStrategy" /></properties>
</persistence-unit>
</persistence>
我是 Hibernate 的新手,我的理解可能有点脱节。有人可以建议吗?