我的一个类,它将SQL Server数据库中的表转换为实体。
@Id
@Column(name = "[primary_key]")
private int id;
@Column(name = "[id Employee]")
private byte[] employeeId;
@Column(name = "[Period]")
private Date period;
@Column(name = "[Credit amount]")
private float creditAmount;
@Column(name = "[Type]")
private String type;
@Column(name = "[Weight 585]")
private float weight585;
和 CrudRepo 为它(部分(:
@Query(value = "select sum([Weight 585]) from [ZOK per period] where ([Period] between ?1 and ?2) " +
"and ([id Employee] = ?3) and ([Type] = 'Gold')", nativeQuery = true)
Double getSumZokGold(Date start, Date end, byte[] employeeId);
我所有的列名都是红色的,并带有两个错误的下划线:
- 无法解析列 '';
- 未知数据库函数 '';
我检查了持久性和已分配的数据 - 这是此问题最流行的解决方案。我已经检查了方言 - SQL Server。我检查了所有列名称,没有看到任何错误。
要解决此问题,您可以执行以下操作:
- 检查所有列名称 - 是的,问题可能只在于其中。顺便说一下,如果它是真的,你将有一个错误。
- 在
Database
(IDE 右侧(添加新数据库并连接到数据源。 - 检查您的
Persistence
("Intellij IDEa"的左下角(,按Assign Data...
并在Data Source
不是默认源中使用,而是完全属于您的源。 - 如果您已经连接了数据库(例如 MS 服务器( - 重新连接。是的,它也很有用。
- 现在,如果您的问题仍然困扰着您 - 打开
File - Invalidate Caches / Restart
并选择蓝色按钮无效并重新启动。
PS:如果您在数据库中为表列使用俄语名称 - 将它们写为@Column(name = "[...]")
在 SQL 中@Query
将 N 放在 " 中的值之前或在括号中写名称。但最好的主意 - 只使用英语!