IntelliJ随机重新分配实体的数据源

时间:2019-08-29 23:13:52

标签: java jpa intellij-idea

我有一个JPA 2.1应用程序,它使用两组不同的表连接到两个不同的数据库。在IntelliJ中,可以使用一个持久性视图将每个JPA实体分配给适当的数据源,并且可以正常工作。 IntelliJ能够根据数据源中的相应表验证实体的表和列。

时不时地,IntelliJ(版本2018.3)会失去我的选择,并将实体附加到另一个数据源。当我打开类并发现实体的表和列不匹配时,我发现了这一点。交换发生后的不确定时间,我偶然发现了该更改。

我的解决方法是手动删除不正确的分配并进行正确的分配。 IntelliJ无法记住此作业已经过时。

我怀疑IntelliJ可能正在自动生成文件来表示被@Entity注释的类,也许这就是问题所在。

我知道我可以使用<class>属性将实体添加到persistence.xml中,以便在此配置文件中进行数据源分配,但是IntelliJ似乎仅是一个问题。服务器上的部署(基于Maven)可以编译并按预期运行。

使用IntelliJ可以做些什么以避免丢失数据源分配?

其他说明:

  • 这些映射未记录在<module>.iml文件中。我仍然找不到记录在哪里。

  • IntelliJ不考虑使用<class>中的persistence.xml属性进行验证。

  • IntelliJ不考虑在实体上使用@PersistenceUnit(unitName = "unitName")批注进行验证。

1 个答案:

答案 0 :(得分:2)

让IntelliJ记住Entity及其数据源之间的关联是错误的方法。相反,需要告知IntelliJ 持久性单元与其数据源之间的关联。

启用JPA构面时启用的持久性视图都提供了这两个选项,但是IntelliJ将在两个持久性单元下列出所有带注释的实体,这会使您认为需要打开每个实体来执行映射。 / p>

在“持久性视图”中唯一需要执行的操作是将每个持久性单元映射到其数据源。