JPA无法解析列/ IntelliJ
我正在尝试使用Hibernate JPA实现映射一些Java类。 我的问题是我不能使用硬编码的Strings als列名。 您可以在下面的图片中看到我收到的错误消息。
我正在使用OpenJPA作为我的默认JPA提供程序,并且已经尝试更改它。
IntelliJ版本14.0.3
问候,
您必须将数据源(首先在数据库视图中创建数据源 – 也就是真正的JDBC数据库连接)与持久性单元或会话工厂(hibernate.cfg.xml)相关联。
按照以下步骤操作,警告将消失:
- 打开“持久性”工具窗口(“查看”|“工具窗口”|“持久性”)。
- 右键单击必要的模块,持久性单元或会话工厂,然后在上下文菜单中选择“分配数据源”。
- 在打开的“分配数据源”对话框中,单击“数据源”字段,然后选择所需的数据源。 (要删除与数据源的关联,请选择。)
请参见此处:将数据源与会话工厂和持久性单元相关联
我发现Panos的答案很有用,但我没有看到有人提到将数据库添加为数据源。 也许这是常规的假设,但如果没有,这就是我必须做的事情:
选择查看/工具Windows /数据库
数据库窗口通常显示在右上角。
在数据库窗口中,单击绿色+符号并选择数据源/ MySQL (或您正在使用的任何数据源风格)。
弹出“ 数据源和驱动程序”窗口。
如果未在此处列出您的数据库,请使用空表单添加以下内容:
- 主机:通常是localhost,但如果您的测试数据库存在于另一台机器上,请将该地址放入。
-
用户名:供您使用。
-
密码:用于数据库用户的密码。
IDEA可能需要一些小工具才能找到JDBC驱动程序。 我被告知理论上应该在我正在进行的项目的maven构建过程中找到它,但事实并非如此。 我重新打开了View / Tool Windows / Database并查看了我的MySQL条目。 在底部,它在Driver:旁边有一条错误消息,还有一个MySQL链接。 我点击了MySQL链接,IDEA提出了一个弹出窗口来获取Connector / J.
尽管自动提交和自动同步的复选框默认为已检查并且我将其留下,但IDEA似乎需要轻推。 或许这只是需要一段时间而且我很不耐烦。
无论如何,首先我双击数据库中我的数据库的行。 这似乎是这样做的,但我还没有意识到我还需要持久性 ,并且在排序时,在同事的建议下,我还点击了数据库上的同步按钮(圆圈中的两个箭头)。
您还可以在数据库中右键单击数据库,然后选择“ 同步” 。
可能需要几秒钟,但您应该看到IDEA填充数据库中条目下的数据库模式。
最后我找到了Panos的答案并修复了Persistence 。
选择“ 查看/工具Windows /持久性”
“持久性”窗口通常显示在左上角。
在“持久性”窗口中,右键单击项目,然后选择“ 分配数据源” 。
IDEA会弹出一个包含两列的对话框,您的项目位于左列,而我的情况则是右侧列中的空单元格。 单击空单元格,IDEA应该为您提供一个下拉列表,允许您选择刚刚添加的数据库。
同样,IDEA可能需要几秒钟才能完成对数据源的分析并重做所有检查。
实际上,这不是任何阻止代码编译的错误。 可能你的拼写检查程序已启用,并且会给你拼写错误。 如果您可以编译代码,那么您可以忽略这些类型的方案。
看看你没有收到任何其他文本的错误,比如@Column
, @Column
@GeneratedValue
等。这意味着使用这些东西的jar子都在你的构建路径中。 所以我认为你可以忽略这些类型的错误。
如果您使用的是JPA,那么将SQL Dialect设置为HSQLDB而不是MySQL也很重要。 这通常令人困惑,因为感觉MySQL是正确的方言,但实际上你正在处理的是hibernate是HSQL。
如果您刚刚升级到IntelliJ 2017.13或此版本的其他衍生产品(例如,Webstorm),或者您刚刚重新导入项目,则可能会破坏语言注入并需要手动更正此问题。
这可以通过项目完成
设置 – >语言和框架
IDE的一部分。