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项目。