这是我第一次尝试使用 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>
通用.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,有没有办法使用 Spring Boot java 配置覆盖 persistence.xml ?