无法使用Microsoft SQL Server和Javax.Persistence解析Java中的列[名称]

问题描述 投票:1回答: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。我检查了所有列名,没有看到任何错误。

java sql sql-server mssql-jdbc javax.persistence
1个回答
0
投票

要解决此问题,您可以这样做:

  1. 检查所有列的名称-是的,问题可能出在其中。 顺便说一句,如果为true,则会出现一个错误。
  2. Database中(在IDE的右侧)添加新数据库并连接到您的数据源。
  3. 检查您的Persistence(“ Intellij IDEa”的左下角,按Assign Data...并在Data Source中使用,不是默认来源,而是您的原始来源。
  4. 如果已连接数据库(例如,MS Server)-重新连接。是的,它也很有用。
  5. 现在,如果您的问题仍然困扰您-打开File - Invalidate Caches / Restart并选择蓝色按钮无效并重新启动]。
  6. P.S .:如果您对数据库中的表列使用俄语名称-将其写为@Column(name = "[...]"),并在SQL @Query中将N放在值之前,在“”中或在括号中写上名称。 但是最好的主意-仅使用英语!

© www.soinside.com 2019 - 2024. All rights reserved.