• 关于postgresql报 ERROR: XXX does not exist


    postgresql是区分大小写的

    受限标识符或被引号修饰的标识符。它是由双引号(")包围的一个任意字符序列。一个受限标识符总是一个标识符而不会是一个关键字。因此"select"可以用于引用一个名为“select”的列或者表,而一个没有引号修饰的select则会被当作一个关键词,从而在本应使用表或列名的地方引起解析错误。在上例中使用受限标识符的例子如下:UPDATE "my_table" SET "a" = 5;

    在PostgreSQL关系型数据库中存在关键字的使用的问题,例如user 做表名,create table user (id int, name,varchar(20));创建的时候需要给表名user加上双引号"user";

    我有一个使用hibernate映射到postgres数据库的模型类。我的模型类是:



      @Entity 
    @Table(name =“USER”)
    public class用户{

    @Id
    @GeneratedValue
    @Column(name =“id”)
    private long id;

    @Column(name =“username”,unique = true)
    private String username;

    @Column(name =“email”)
    private String email;

    @Column(name =“created”)
    私有时间戳已创建;

    public User(long id,String username,String email){
    this.id = id;
    this.username = username;
    this.email = email;
    }
    }



    我尝试使用用户名“adam”检索用户使用以下查询:



      tx = session.beginTransaction(); 
    TypedQuery< User> query = session.createQuery(“FROM User u WHERE u.username =:username”,User.class).setParameter(“username”,“adam”);
    user = query.getSingleResult();



    我得到一个例外情况:



      org.postgresql.util.PSQLException:错误:列user0_.id不存在



    我的bash shell数据库如下所示:





    hibernate如何将类属性映射到表列?它是否仅基于 @Column(name =“username”)匹配,还是根据数据类型和约束(例如唯一/自动增量)尝试匹配?

    解决方法
     

    解释



    它给你这个错误:



      org.postgresql.util.PSQLException:错误:列user0_.id不存在



    因为当你创建一个数据库PostgreSQL时,它会创建一个名为 public 的默认模式,所以当你没有在实体中指定名称,它将在公共模式中自动检查,因为您收到此错误。



    另一件事确认模式名称是正确的,错误说:



     列user0_.id不存在



    而不是:



     列myapp.user0_.id不存在
    ------- ^ ---- ^



    确认查询使用公共架构而不是真正的架构myapp






    解决方案



    要解决此问题,您必须指定架构名称,如下所示:



      @Table(name =“USER”,schema =“myapp”)






    建议



    不要在PostgreSQL中使用表格或列名称中的大写字母。



      @Table(name =“user”,schema =“myapp”)
    外加Navicat破解过程https://www.jianshu.com/p/749b3f78039b
  • 相关阅读:
    利用C# + GDI plus模拟杂乱无章的现实场景
    Windows Identity Foundation已包含在.NET 4.5中
    实体框架 6.0:异步、IQueryable操作符和特性改进
    Knotter 0.7.0 发布,交错图案设计工具
    实体框架 5.0:空间数据类型、性能增强、数据库提升
    JFormDesigner 5.2 Beta 发布,Swing设计工具
    获取泛型参数的泛型类型
    Android MapView 申请apiKey
    Android Animation学习笔记
    eclipse 无法启动 JVM terminated. Exit code=1
  • 原文地址:https://www.cnblogs.com/Treesir/p/11492254.html
Copyright © 2020-2023  润新知