Я хочу изменить имя столбца внешнего ключа, сгенерированного моей схемой. Ниже приведена конфигурация схемы, которую я использую:
<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 (ID ActivityDim как внешний ключ с именем 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, мое понимание может быть немного отключено. Может кто-нибудь предложить?