我有一个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")
批注进行验证。
答案 0 :(得分:2)
让IntelliJ记住Entity及其数据源之间的关联是错误的方法。相反,需要告知IntelliJ 持久性单元与其数据源之间的关联。
启用JPA构面时启用的持久性视图都提供了这两个选项,但是IntelliJ将在两个持久性单元下列出所有带注释的实体,这会使您认为需要打开每个实体来执行映射。 / p>
在“持久性视图”中唯一需要执行的操作是将每个持久性单元映射到其数据源。