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;

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

侵害の場合は、連絡してくださいdebugcn@gmail.com

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

UPDATE, INSERT and ON DUPLICATE KEY UPDATE in one query

分類Dev

Realm order of insert or update

分類Dev

Postgres INSERT ON CONFLICT DO UPDATE vsINSERTまたはUPDATE

分類Dev

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

分類Dev

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

分類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

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

SQL-IF EXISTS UPDATE ELSE INSERT INTO

分類Dev

INSERT TRIGGER AFTER UPDATE ANOTHER TABLE

分類Dev

Efficient way to bulk insert / update using typeORM

分類Dev

Doctrine ArrayCollection refuses to update after insert

分類Dev

Insert or update query executed successfully but data are not persistent

分類Dev

Which is better: select with update, delete and insert, or replace?

Related 関連記事

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

    UPDATE, INSERT and ON DUPLICATE KEY UPDATE in one query

  5. 5

    Realm order of insert or update

  6. 6

    Postgres INSERT ON CONFLICT DO UPDATE vsINSERTまたはUPDATE

  7. 7

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

  8. 8

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

  9. 9

    Insert and update a datetime into SQL database

  10. 10

    Update followed by insert in a stored procedure

  11. 11

    mySQL insert wont update database

  12. 12

    Update MySQL table after INSERT

  13. 13

    Can't update then insert in SQL

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

    SQL-IF EXISTS UPDATE ELSE INSERT INTO

  25. 25

    INSERT TRIGGER AFTER UPDATE ANOTHER TABLE

  26. 26

    Efficient way to bulk insert / update using typeORM

  27. 27

    Doctrine ArrayCollection refuses to update after insert

  28. 28

    Insert or update query executed successfully but data are not persistent

  29. 29

    Which is better: select with update, delete and insert, or replace?

ホットタグ

アーカイブ