JPA使用中に発生した問題

2840 ワード

MySQL結合プロセスの問題
Hibernateネーミングポリシーテーブル名の変更
Spring Spring Data JPAエラー:Page 1 of 1 containing UNKNOWN instances
JPA Pageableクエリーインデックスは0から始まり、フロントエンドからpage値がデフォルトで1になります.
Page taskPage=workTaskService.queryTaskPage(taskName,scheStrategy,taskStatus,
                new PageRequest(page-1,limit));


最初はこの問題しかないと思っていたが、後で間違って報告し、コードをチェックした後、自分が愚かで死んだことに気づいた.
前のコード
 @Query("select  new com.ustc.inspectweb.entity.ro.WorkTaskMonitorRo(" +
            "a.workTaskId,a.devType,a.endDate,a.taskName,a.taskDesc," +
            "a.startDate,a.taskStatus,a.scheStrategy,a.nextExecuteTime) " +
            "from WorkTaskEntity a where a.isDelete=0 " +
            " and (a.taskName is null  or a.taskName like concat('%',:taskName,'%'))" +
            " and (a.scheStrategy is null  or a.scheStrategy=:scheStrategy )" +
            " and (a.taskStatus is null or a.taskStatus=:taskStatus)" +
            " order by a.startDate desc")

変更後
 @Query("select  new com.ustc.inspectweb.entity.ro.WorkTaskMonitorRo(" +
            "a.workTaskId,a.devType,a.endDate,a.taskName,a.taskDesc," +
            "a.startDate,a.taskStatus,a.scheStrategy,a.nextExecuteTime) " +
            "from WorkTaskEntity a where a.isDelete=0 " +
            " and (:taskName is null  or a.taskName like concat('%',:taskName,'%'))" +
            " and (:scheStrategy is null  or a.scheStrategy=:scheStrategy )" +
            " and (:taskStatus is null or a.taskStatus=:taskStatus)" +
            " order by a.startDate desc")
taskNamenullに転送されます
日付変換JSON形式の問題@RestController DateタイプがJSONに変換された場合、フォーマットが正しくないには2つの解決策があります.
  • はアプリケーションにあります.properties構成グローバル設定を変更し、すべてのDateタイプに対して有効にする
  • 指定タイプに注釈@JsonFormatを追加し、注釈された属性に対してのみ
  • を有効にする.
    どちらの方法もあり、注釈の優先度が高い.
    application.properties構成
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    spring.jackson.time-zone=GMT+8
    spring.jackson.serialization.write-dates-as-timestamps=false #  true   long    
    

    注記の設定
    long型のtimestampは日付を表します.
    @JsonFormat(shape = JsonFormat.Shape.NUMBER)
    

    文字列は日付を表します.
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    

    desc予約ワードの問題
    シーン:エンティティクラスを新規作成し、descフィールドが表示され、保存中にSQL Error: 1064, SQLState: 42000とエラーが発生しました.
    解決方法:https://stackoverflow.com/questions/28946567/sql-error-1064-sqlstate-42000-while-creating-new-entity
    フィールド名の変更_
    https://etherealbits.com/2012/12/debunking-the-myths-of-rpc-rest/