无法使用 Microsoft SQL 服务器和 Javax.Persistence 解析 Java 中的列 [name]

Cannot resolve column [name] in Java using Microsoft SQL Server and Javax.Persistence

我的一个 类 将 SQL 服务器数据库中的 table 转换为实体。

    @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);

我所有的列名都是红色的并且带有下划线,有两个错误:

  1. 无法解析列“”;
  2. 未知的数据库函数'';

我检查了已分配的持久性和数据 - 它是该问题最流行的解决方案。我已经检查了方言 - SQL 服务器。我检查了所有列名,没有发现任何错误。

要解决这个问题你可以这样做:

  1. 检查所有列名 - 是的,问题可能就在其中。 顺便说一句,如果它是真的,你会得到一个错误。
  2. Database(右侧 IDE 侧)添加新数据库并连接到您的数据源。
  3. 检查您的 Persistence("Intellij IDEa" 中的左下角),按 Assign Data... 并在 Data Source 中使用不是默认来源,而是您的来源。
  4. 如果您已经连接数据库(例如 MS 服务器)- 重新连接。是的,它也很有用。
  5. 现在,如果您的问题仍然困扰您 - 打开 File - Invalidate Caches / Restart 并选择蓝色按钮 无效并重新启动

P.S.: 如果您在数据库中为 table 列使用俄语名称 - 将它们写为 @Column(name = "[...]") 并在 SQL @Query 中输入 N在“”中的值之前或在括号中写入名称。 但最好的办法是只使用英语!