Это моя первая попытка использования Hyperjaxb3.У меня есть фрагмент моего 2 XSD, как показано ниже
ContractFullInfo.xsd
<xsd:import namespace="http://homecredit.net/homerselect/common/v1" schemaLocation="Common.xsd"/>
<xsd:element name = "ContractFullInfoRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="systemEvent" type="common:ContractSystemEventType"/>
<xsd:element name="data" type="ContractFullInfo"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="ContractPerson">
<xsd:sequence>
<xsd:element name="cuid" type="xsd:long"/>
<xsd:element name="personRole" type="PersonRoleType"/>
</xsd:sequence>
</xsd:complexType>
Common.xsd
<xsd:complexType name="ContractPerson">
<xsd:sequence>
<xsd:element name="cuid" type="xsd:long"/>
<xsd:element name="personRole" type="PersonRoleType"/>
</xsd:sequence>
</xsd:complexType>
Проблема в том, что он генерирует два класса ContractPerson, как показано ниже:
<class>net.homecredit.homerselect.common.v1.ContractPerson</class> <==
<class>net.homecredit.homerselect.common.v1.MoneyDto</class>
<class>net.homecredit.homerselect.contract.v3.BankAccount</class>
<class>net.homecredit.homerselect.contract.v3.ClosedEndParameter</class>
<class>net.homecredit.homerselect.contract.v3.ContractBase</class>
<class>net.homecredit.homerselect.contract.v3.ContractCommodity</class>
<class>net.homecredit.homerselect.contract.v3.ContractDocument</class>
<class>net.homecredit.homerselect.contract.v3.ContractEvent</class>
<class>net.homecredit.homerselect.contract.v3.ContractFullInfo</class>
<class>net.homecredit.homerselect.contract.v3.ContractFullInfoRequest</class>
<class>net.homecredit.homerselect.contract.v3.ContractParameter</class>
<class>net.homecredit.homerselect.contract.v3.ContractPerson</class> <==
<class>net.homecredit.homerselect.contract.v3.ContractService</class>
<class>net.homecredit.homerselect.contract.v3.RefinancedContract</class>
<class>net.homecredit.homerselect.contract.v3.RevolvingParameter</class>
и выдает ошибку при развертывании как
Entity name must be unique in a persistence unit. Entity name [ContractPerson] is used for the entity classes [net.homecredit.homerselect.common.v1.ContractPerson] and [net.homecredit.homerselect.contract.v3.ContractPerson].
Частьмоей конфигурации Java (которую я сейчас прокомментировал)
@Bean
public DataSource dataSource() throws NamingException {
return (DataSource) new JndiTemplate().lookup(env.getProperty("spring.datasource.jndi-name"));
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws NamingException {
LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
em.setPackagesToScan(new String[]{"net.homecredit.homerselect.contract.v3"});
em.setPersistenceUnitName("net.homecredit.homerselect.common.v1:net.homecredit.homerselect.contract.v3");
em.setJtaDataSource(dataSource());
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", env.getProperty("spring.jpa.properties.hibernate.dialect"));
properties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("spring.jpa.hibernate.ddl-auto"));
em.setJpaProperties(properties);
return em;
}
Мои вопросы:
- Оба класса абсолютно одинаковы.Как я могу выбрать один?
- Я использую Spring Boot, есть ли способ переопределить persistence.xml с использованием Java-конфигурации Spring Boot?