intellij-idea JPA无法解析列/IntelliJ

fcy6dtqo  于 2022-11-01  发布在  其他
关注(0)|答案(9)|浏览(422)

我尝试使用Hibernate JPA实现来Map一些Java类。我的问题是我不能使用硬编码的字符串作为列名。你可以看到我在下面的图片中得到的错误消息。

我使用OpenJPA作为我的默认JPA提供程序,并且已经尝试过更改它。
IntelliJ版本14.0.3
敬祝商祺,

6qfn3psc

6qfn3psc1#

您必须将数据源(首先在数据库视图中创建数据源-也就是您真正的JDBC数据库连接)与持久性单元或会话工厂(hibernate.cfg.xml)相关联。
按照以下步骤操作,警告将消失:
1.打开“持久性”工具窗口(查看|工具窗口|持久性)。
1.右键单击所需的模块、持久性单元或会话工厂,然后在上下文菜单中选择“分配数据源”。
1.在打开的“分配数据源”对话框中,单击“数据源”字段并选择所需的数据源。(要删除与数据源的关联,请选择。)
请参见此处:Associating data sources with session factories and persistence units

p4rjhz4m

p4rjhz4m2#

对于那些只想禁用此检查的用户,请转到Intellij IDEA -〉首选项-〉搜索“注解中未解析的数据库引用”并取消选中它。x1c 0d1x(macOS Mojave and Intellij Ultimate 2019.3)
这将禁用检查并删除@Column注解上的所有“无法解析列...”错误。Intellij将停止检查数据库表中是否存在String列名称。执行此操作的风险由您自行承担。

3ks5zfa0

3ks5zfa03#

我发现Panos的回答很有用,但我没有看到任何人提到将数据库添加为数据源。也许这是一个足够常规的假设,但如果不是,下面是我必须做的:
选择视图/工具窗口/数据库
[数据库]视窗通常出现在右上方。
在“数据库”窗口中,单击绿色的**+符号,然后选择数据源/MySQL**(或您正在使用的任何类型的数据源)。
弹出数据源和驱动程序窗口。
如果您的数据库未在此处列出,请使用空表单添加以下内容:

***Host:**通常为localhost,但如果您的测试数据库位于另一台计算机上,请输入该地址。
***用户名:**供您的数据库使用。
***密码:**为您的数据库使用者密码。

IDEA可能需要一些操作来找到JDBC驱动程序。我被告知理论上它应该在我正在工作的项目的maven构建过程中找到它,但它没有。我重新打开View/Tool Windows/Database并查看我的MySQL条目。在底部,它在Driver:旁边有一个错误消息,还有一个MySQL链接。我点击了MySQL链接,IDEA弹出一个弹出窗口来获取Connector/J。
尽管Auto commitAuto sync的复选框默认为选中状态,我也没有去勾选它们,但IDEA似乎需要一点帮助,或者只是需要一段时间,我不耐烦了。
在任何情况下,我首先双击了Database中的数据库行。这似乎可以做到这一点,但我还没有意识到我需要Persistence,在整理这些内容时,在同事的建议下,我还单击了Database上的Synchronize按钮(圆圈中的两个箭头)。
您也可以在数据库中右键单击数据库,然后选择同步
这可能需要几秒钟的时间,但您应该会看到IDEA在Database中的条目下填充数据库架构。
最后,我找到了帕诺斯的答案,并修复了持久性
选择视图/工具窗口/持久性
“持久性”窗口通常显示在左上方。
在“持久性”窗口中,右键单击项目,然后选择“分配数据源”。
IDEA会弹出一个两栏的对话框,左栏是你的项目,右栏是一个空单元格,点击这个空单元格,IDEA会给予一个下拉菜单,让你选择刚添加的数据库。
同样,IDEA可能需要几秒钟的时间来完成数据源的分析并重新进行所有检查。

pwuypxnk

pwuypxnk4#

只是对于其他任何人谁这没有解决,并通过谷歌遇到(像我自己)..设置表名通过@表注解修复了我。

4nkexdtk

4nkexdtk5#

实际上,这并不是任何阻止代码编译的错误。可能是你的拼写检查器打开了,给你带来了拼写错误。如果你能编译代码,那么你可以忽略这些类型的情况。
看,你没有得到任何错误的其他文本,如@Column@GeneratedValue等。这意味着jar使用这类的东西是在您的构建路径。所以我认为你可以忽略这些类型的错误。

ws51t4hk

ws51t4hk6#

也许这个解决方案也能帮助一些人...
1.从Intellij右侧打开数据库对话框窗口
1.转到"DB数据源属性“(在顶部菜单中找到)
1.转到方案
1.取消选中“默认数据库”
1.检查您的特定数据库,并在内部检查默认模式(公共)
祝你好运!

pzfprimi

pzfprimi7#

如果不存在真正的不匹配,并且只是由于IDE而出现此警告,则可以轻松地将项目与所连接的数据源链接起来。Intellij已经建议了这样做的方法。

um6iljoc

um6iljoc8#

我正在使用Intellij,通过JPA连接数据库。我遇到了和你一样的问题,这是我的解决方案。
1.您需要按照以下步骤连接数据库:

  • 查看-〉工具窗口-〉数据库-〉然后将您正在使用的数据库添加到Intellj

1.连接数据库后,您需要按照以下步骤将数据源分配给Intellj

  • 查看-〉工具窗口-〉持久化-〉然后从数据库中添加数据,你刚刚从第1步添加好。这是所有!P/s:确保您代码运行良好!

相关问题