INSERTではなくJPAOneToOne UPDATE

Jcov

私はSpring / JPAを初めて使用し、データベース関係@annotationsを使用してコードを単純化しようとしています。

ユーザーエンティティとトークンエンティティの2つのエンティティがあります。ユーザーでsetToken()が呼び出されたときに、テーブル内のユーザーに関連付けられている古いトークンをトークンで上書きする必要があります。

現時点では、(user.setToken()を介した)新しいトークンはUPDATEではなくINSERTになっています。

この関係を実現するにはどうすればよいですか?「Lame-mans」では...ユーザーはトークンを1つしか持つことができず、いつでも別のトークンを与えることができ、古いものを破棄します。これらのモデルには、わかりやすくするために切り捨てた追加のフィールドがあります。

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

    @Column(name = "USER_ID")
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Long userId;

    @OneToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
    @JoinColumn(name = "REFRESH_TOKEN_ID")
    private RefreshToken refreshToken;

...setters and getters

そしてトークンのコード:

@Entity
@Table(name = "RefreshTokens")
public class RefreshToken {

    @Column(name = "REFRESH_TOKEN_ID")
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long tokenId;
MyTwoCents

長いRefreshTokenフィールドREFRESH_TOKEN_ID1つしかない場合これに別のテーブルが必要な理由。あなたはこのようなものを持つことができます

public class User {

    @Column(name = "USER_ID")
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Long userId;

    @Column(name = "REFRESH_TOKEN_ID")
    private Long refreshToken;

...

setToken()が呼び出されたときは、任意の値を設定する必要があります。はいの場合はそれです。あなたのロジックはうまく機能します、

いいえの場合は、現在の時刻などに基づいてJavaで常に一意の値を生成できます。

または

同じパターンを使い続けたい場合 orphanRemoval = true

@OneToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "REFRESH_TOKEN_ID")
private RefreshToken refreshToken;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CakePHP-Model :: savecause()がUPDATEではなくINSERTになるのはなぜですか?

分類Dev

既存の値がnullの場合、HibernateがUPDATEではなくINSERTを実行するのはなぜですか?

分類Dev

INSERTまたはUPDATEに使用されるPythonPostgreSQL COPYコマンド(INSERTだけでなく)

分類Dev

SQL Serverのパフォーマンスは、UPDATE / INSERT操作で非常に低くなります(常にではありません)

分類Dev

Postgres INSERT ON CONFLICT DO UPDATE vsINSERTまたはUPDATE

分類Dev

UPDATE, INSERT and ON DUPLICATE KEY UPDATE in one query

分類Dev

PUTがupdate()ではなくshow()に送信されるのはなぜですか?

分類Dev

Realm order of insert or update

分類Dev

配列比較に基づくSQLDELETE、UPDATE、またはINSERT

分類Dev

VS 2013 Professional Update4では.csファイルを開くことができなくなりました

分類Dev

update-manager:16.04ではなく15.04にアップグレードします

分類Dev

Insert and update a datetime into SQL database

分類Dev

Update followed by insert in a stored procedure

分類Dev

mySQL insert wont update database

分類Dev

Update MySQL table after INSERT

分類Dev

Can't update then insert in SQL

分類Dev

Symfony-INSERT、UPDATE、またはDELETEで異なる方法でエンティティを検証します

分類Dev

Laravel5.1の雄弁な試みはUPDATEではなくDBに挿入しようとします

分類Dev

SQL Server2016でのINSERTまたはUPDATEの安全なソリューション

分類Dev

INSERT ... ON DUPLICATE KEY UPDATEがMySQLのキー「PRIMARY」に重複エントリ「x」を与えるのはなぜですか?

分類Dev

SQLServerでのINSERTまたはUPDATEのソリューション

分類Dev

PostgreSQLでUPSERT(MERGE、INSERT ... ON DUPLICATE UPDATE)する方法は?

分類Dev

SQLITEでの条件付きINSERTまたはUPDATE

分類Dev

IF SQLでINSERTとUPDATEのための条件

分類Dev

mysql update は 1 行ではなくすべての行を更新しています

分類Dev

extjsストアがupdateではなくcreateを呼び出すことがあります

分類Dev

SQLiteデータベースのUPDATEまたはINSERTが機能しない

分類Dev

SQL-IF EXISTS UPDATE ELSE INSERT INTO

分類Dev

INSERT TRIGGER AFTER UPDATE ANOTHER TABLE

Related 関連記事

  1. 1

    CakePHP-Model :: savecause()がUPDATEではなくINSERTになるのはなぜですか?

  2. 2

    既存の値がnullの場合、HibernateがUPDATEではなくINSERTを実行するのはなぜですか?

  3. 3

    INSERTまたはUPDATEに使用されるPythonPostgreSQL COPYコマンド(INSERTだけでなく)

  4. 4

    SQL Serverのパフォーマンスは、UPDATE / INSERT操作で非常に低くなります(常にではありません)

  5. 5

    Postgres INSERT ON CONFLICT DO UPDATE vsINSERTまたはUPDATE

  6. 6

    UPDATE, INSERT and ON DUPLICATE KEY UPDATE in one query

  7. 7

    PUTがupdate()ではなくshow()に送信されるのはなぜですか?

  8. 8

    Realm order of insert or update

  9. 9

    配列比較に基づくSQLDELETE、UPDATE、またはINSERT

  10. 10

    VS 2013 Professional Update4では.csファイルを開くことができなくなりました

  11. 11

    update-manager:16.04ではなく15.04にアップグレードします

  12. 12

    Insert and update a datetime into SQL database

  13. 13

    Update followed by insert in a stored procedure

  14. 14

    mySQL insert wont update database

  15. 15

    Update MySQL table after INSERT

  16. 16

    Can't update then insert in SQL

  17. 17

    Symfony-INSERT、UPDATE、またはDELETEで異なる方法でエンティティを検証します

  18. 18

    Laravel5.1の雄弁な試みはUPDATEではなくDBに挿入しようとします

  19. 19

    SQL Server2016でのINSERTまたはUPDATEの安全なソリューション

  20. 20

    INSERT ... ON DUPLICATE KEY UPDATEがMySQLのキー「PRIMARY」に重複エントリ「x」を与えるのはなぜですか?

  21. 21

    SQLServerでのINSERTまたはUPDATEのソリューション

  22. 22

    PostgreSQLでUPSERT(MERGE、INSERT ... ON DUPLICATE UPDATE)する方法は?

  23. 23

    SQLITEでの条件付きINSERTまたはUPDATE

  24. 24

    IF SQLでINSERTとUPDATEのための条件

  25. 25

    mysql update は 1 行ではなくすべての行を更新しています

  26. 26

    extjsストアがupdateではなくcreateを呼び出すことがあります

  27. 27

    SQLiteデータベースのUPDATEまたはINSERTが機能しない

  28. 28

    SQL-IF EXISTS UPDATE ELSE INSERT INTO

  29. 29

    INSERT TRIGGER AFTER UPDATE ANOTHER TABLE

ホットタグ

アーカイブ