Java Maven 2项目相互依赖
我有两个项目,Java Maven 2项目相互依赖,java,maven,Java,Maven,我有两个项目,员工和数据。这些项目表示链接到my db的实体 每个员工都有一个字段链接到data中的表,因此我的employeepom.xml对数据有依赖关系。我的问题就在这里,每个数据都是由员工插入的,因此数据也依赖于员工。这将导致双向依赖 这在maven中可能吗?我对maven的理解是,这会导致问题 项目员工 @Entity @Table(name="employees", uniqueConstraints= { @UniqueConstraint(columnNames=
员工
和数据
。这些项目表示链接到my db的实体
每个员工都有一个字段链接到data
中的表,因此我的employee
pom.xml对数据有依赖关系。我的问题就在这里,每个数据都是由员工插入的,因此数据
也依赖于员工
。这将导致双向依赖
这在maven中可能吗?我对maven的理解是,这会导致问题
项目员工
@Entity
@Table(name="employees", uniqueConstraints= {
@UniqueConstraint(columnNames="idEmployees"),
@UniqueConstraint(columnNames="idCardNumber"),
@UniqueConstraint(columnNames="niNumber")
})
public class Employee {
@Id
@GeneratedValue
@Column(unique=true, nullable=false, updatable=false)
private int idEmployees;
//other class variables
@ManyToOne(cascade=CascadeType.PERSIST, fetch=FetchType.LAZY)
@JoinColumn(name="niCategoryId", nullable=false, updatable=false)
private NIData niCategory;
//constructors getter and setters
}
数据
项目
@Entity
@Table(name="nidata", uniqueConstraints= {
@UniqueConstraint(columnNames="idNiData")
})
public class NIData {
@Id
@GeneratedValue
@Column(unique=true, nullable=false, updatable=false)
private int idNiData;
//other class variables
@ManyToOne(cascade=CascadeType.PERSIST, fetch=FetchType.LAZY)
@JoinColumn(name="createdEmployeeId", nullable=false, updatable=false)
private Employee createdEmployee;
//constructors getter and setters
}
正如您所看到的,它们相互依赖,但我希望它们在不同的项目中,因为它们属于不同的模式。此外,我还计划添加其他模式,我可能不想在我正在设计的系统的每个部分中公开这些模式,但只公开其中的一部分。将所有与实体相关的类放在单个Maven模块中会更有意义。这样,所有类都可以相互依赖。这还将集中所有要在一个项目中维护的持久化类
事实上,Maven不允许循环依赖,因为它不知道首先构建哪个模块。我想将它们分开,原因有2个:1)它们有不同的模式;2)我最终会添加更多的模式,我想为代码的某些部分提供部分模式。我不想到处都有。由于这个原因,我正在使用不同的项目。我对您的数据模型了解不多,但即使它们有不同的数据库模式,将它们放在一个模块中仍然更符合逻辑。关于第二个原因,我认为Maven中有一种方法可以生成模块的“子包”。所以,若一个项目只依赖于实体的一个子集,那个么即使在一个模块中包含所有实体,您仍然能够做到这一点。你可以阅读有关概要文件和。我认为你是对的,最好将它们放在同一个项目的1个持久性单元下。如果他们在暴露其中一个时相互依赖,我无论如何都需要暴露另一个,否则我可能会出错。谢谢你!*同一个xml中的不同持久性单元很抱歉,因为我仍然将它们保存在不同的模式中。我认为,您需要一个一个或两个都可以依赖的API项目。