sql >> データベース >  >> RDS >> PostgreSQL

org.postgresql.util.PSQLException:エラー:列user0_.idが存在しません-Hibernate

    ##解決策

    PostgreSQL 次のようにスキーマの名前を指定する必要があります:

    @Table(name="table_name", schema = "myapp")
                              ^^^^^^^^^^^^^^^^
    

    ##ロングストーリー

    このエラーが発生しました:

    org.postgresql.util.PSQLException: ERROR: column user0_.id does not exist
    

    PostgreSQLでデータベースを作成するとき 、 publicという名前のデフォルトスキーマを作成します 、したがって、Entityで名前を指定しない場合 その後、Hibernateはパブリックで自動的にチェックします スキーマ。

    ##グッドプラクティス

    1. databaseの名前に大文字を使用しないでください 、schematables またはcolumns PostgreSQL 。それ以外の場合は、この名前を引用符で囲む必要があります。これにより構文エラーが発生する可能性があるため、代わりに:
    2. を使用できます。

    @Table(name="table_name", schema = "schema_name")
                 ^^^^^^^^^^             ^^^^^^^^^^^
    
    1. キーワードユーザー PostgreSQLの予約キーワードです ご覧ください

    +----------+-----------+----------+-----------+---------+
    | Key Word |PostgreSQL |SQL:2003  | SQL:1999  | SQL-92  |
    +----------+-----------+----------+-----------+---------+
    |  ....        ....       ....       ....       ....    |
    +----------+-----------+----------+-----------+---------+
    | USER     |  reserved |reserved  | reserved  | reserved|
    +----------+-----------+----------+-----------+---------+
    
    1. Dtoの違い およびエンティティ エンティティの名前の末尾にエンティティを使用することをお勧めします(例:UserEntity)。


    1. エンティティフレームワークを使用して主キー値を更新します

    2. SQL構文にエラーがあります。 MySQLサーバーのバージョンに対応するマニュアルを確認してください

    3. mysql、bigint、または32ビットを超える64ビット未満の値を格納するための10進数

    4. 関連するテーブルからグループごとの最大行を取得します