1

我将 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);

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

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

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

4

1 回答 1

0

要解决此问题,您可以执行以下操作:

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

PS:如果您对数据库中的表列使用俄语名称 - 将它们写为@Column(name = "[...]")SQL中的@QueryN 放在“”中的值之前或将名称写在括号中。但最好的主意 - 只使用英语!

于 2019-12-27T14:46:29.903 回答