23

私は春が初めてで、 @CreatedDate アノテーションがエンティティでどのように機能するか混乱しています。

私はグーグル検索を行い、多くの解決策がありましたが、1つを除いてどれもうまくいきませんでした. 私はなぜ混乱していますか?

最初に試したのがこれ

@Entity
@EntityListeners(AuditingEntityListener.class)
public class User implements Serializable {

    @Id
    @GeneratedValue
    private Long id;
    private String name;

    @CreatedDate
    private Date created;

    public User(String name) {

        this.name = name;
    }

    public User() {
    }

それは動かなかった。created列の値が NULL になりました。

それから私はこれをしました。

@Entity
@EntityListeners(AuditingEntityListener.class)
public class User implements Serializable {

    @Id
    @GeneratedValue
    private Long id;
    private String name;

    @CreatedDate
    private Date created = new Date();

    public User(String name) {

        this.name = name;
    }

    public User() {
    }

これにより、実際にタイムスタンプがデータベースに保存されました。new Date()私の質問は、私が従ったチュートリアルのほとんどは、現在のタイムスタンプを取得する必要がないことを示唆しています。私はそれが必要なようです。不足しているものはありますか?

4

5 に答える 5

0

JPAエンティティリスナーを使用しないと、日付の作成は機能しません。これは、JPAが監査および日付の作成または変更のために機能する方法であるためです。

以下のようにコードを変更するだけです:

@Entity
@EntityListeners(AuditingEntityListener.class)
class XYZ {

    @Setter(value = AccessLevel.NONE)
    @CreatedDate
    @Column(name = "date_time")
    private Date dateTime;


}
于 2021-12-13T11:21:24.663 に答える