我有一个运行良好的 Spring 项目。我现在需要将项目分成两部分——主要是因为在另一个项目中使用了现有项目的一部分。分手时我遇到了一个我不明白的问题,也不知道问题的根源是什么。例如
+ -- myTestProject
| -- PersonEntity
| -- persistence.xml
| -- pom.xml
+ -- myBaseProject
|
| -- PhoneEntity
| -- pom.xml
当我将 PhoneEntity 保留在 myTestProject
中时,我可以毫无问题地启动 Tomcat。当我像上面那样分离实体时,我从 EclipseLink
得到错误消息:
实体类 [class com.smith.Company] 上属性 [phoneEntity] 的类型 [class com.smith.PhoneEntity] 不是序列化映射的有效类型。属性类型必须实现 Serializable 接口(interface)。
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="eclipselink" transaction-type="RESOURCE_LOCAL">
<description>Application managed persistence unit</description>
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<non-jta-data-source>java:comp/env/jdbc/ecoiDS</non-jta-data-source>
<class>com.smith.PersonEntity</class>
<class>com.smith.PhoneEntity</class>
<class>com.smith.Company</class>
<properties>
<property name="eclipselink.logging.level" value="WARNING" />
<property name="eclipselink.logging.timestamp" value="true" />
<property name="eclipselink.logging.session" value="false" />
<property name="eclipselink.logging.thread" value="false" />
<property name="eclipselink.logging.exceptions" value="true" />
<property name="eclipselink.weaving" value="static"/>
<property name=""/>
</properties>
</persistence-unit>
</persistence>
persistence.xml
也包含了 PhoneEntity
。整个项目编译良好。但不知何故我无法启动该项目。有任何解决问题的提示吗?
最佳答案
您正在尝试 Create a Multi Module Project ;
我建议:创建第三个模块,在其中添加所有实体以及 persistence.xml
文件,然后在 Base< 中添加该模块的依赖项
和 测试
模块。
你可以在这里找到一个实际的例子 -> Spring Boot Multimodule project example .
关于java - 多个项目中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47794964/