PSQLException: ERROR: syntax error at or near

前端 未结 2 1649
没有蜡笔的小新
没有蜡笔的小新 2021-02-14 03:00

I have what I thought was a straight forward relation in JPA. Looks like this. CompanyGroup:

@Entity
@Table
public class CompanyGroup implements Serializable {

         


        
相关标签:
2条回答
  • 2021-02-14 03:49

    Solution 1: As Pascal mentioned, you have to escape the table name with backslash like:

    @Entity
    @Table(name="\"User\"")
    public class User {
        ...
    }
    

    Solution 2: Rename your table's anme with another name (Users)

    @Entity
    @Table(name="Users")
    public class User {
        ...
    }
    

    Solution 3: Add a suffix to the table's name:

    @Entity
    @Table(name="APP_User")
    public class User {
        ...
    }
    

    Solution 4: Change the entity name, e.g. ApplicationUser

    @Entity
    public class ApplicationUser {
        ...
    }
    

    The reason

    PostgreSQL as some reserved SQL Key Words. For example: ABORT, ALL, ARRAY, CACHE, CUBE, USER, ... Those tokens are in the SQL standard or specific to PostgreSQL

    0 讨论(0)
  • 2021-02-14 04:03

    Your entity maps across to a table name that is an SQL reserved keyword (User). Sadly for you, your chosen JPA provider does not automatically quote the table name identifier, and so you get exceptions when referring to the table.

    Solution is either to quote the table name yourself in the @Table annotation, or change the table name to not be a reserved keyword. Alternatively use a JPA provider that auto-quotes such reserved keywords for you (e.g DataNucleus)

    0 讨论(0)
提交回复
热议问题