質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

3回答

1249閲覧

BaseEntityListener.classが参照していないのに処理される

k499778

総合スコア599

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2018/06/18 13:05

編集2018/06/18 23:01

現在Java,SpringBoot,Domaを使ってWebサイトを作っています。
customerテーブルをupdateする際、
CustomerのEntityクラスに継承していないにもかかわらず
BaseEntityListener.classのPreUpdateのメソッドの中に処理が入ってしまうのはなぜでしょうか?

Entityクラスは以下です。

Java

1@Entity 2@Table(name = "customer") 3@AttributeOverride(name = "id", column = @Column(name = "customer_id", 4 nullable = false, columnDefinition = "BIGINT UNSIGNED")) 5public class Customer { 6 7 // fields without id column ... 8 9 public Customer() { 10 } 11 12 // getter and setter ... 13 14}

以下のようにしないと呼び出せないと思っていたのにBaseEntityListener.classに入ってしまうので不思議です。

Java

1@Entity(lister = BaseEntityListener.class) 2public class Customer extends BaseEntity

ちなみにBaseEntityListenerクラスは以下です。

Java

1public class BaseEntityListener { 2 3 @PrePersist 4 public void prePersist(BaseEntity entity) { 5 entity.setCreateDate(new Date()); 6 entity.setModifyDate(new Date()); 7 } 8 9 @PreUpdate 10 public void preUpdate(BaseEntity entity) { 11 entity.setModifyDate(new Date()); 12 } 13 14}

なぜ参照していないのにBaseEntityListenerクラスに処理が入ってしまうのでしょうか?
よろしくお願いいたします。

参考
http://doma.seasar.org/reference/entity.html

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

https://www.seasar.org/wiki/index.php?DomaUpdateOperationLog#pf9f57c3
DomaUpdateLogの1.34.0での変更とは関係ありませんか?

エンティティクラスが他のエンティティクラスを継承する場合、@Entityのlistener要素やnaming要素を親から引き継ぐようになりました。

java

1@Entity(listener = ParentListener.class, naming = NamingType.UPPER_CASE) 2public class ParentEntity { 3 ... 4}

java

1@Entity 2public class ChildEntity extends ParentEntity { 3 ... 4}

上記のような継承関係がある場合、上のChildEntityを注釈する@Entityの要素には何も指定されていませんが、次のような指定がある場合と同等です。

java

1@Entity(listener = ParentListener.class, naming = NamingType.UPPER_CASE) 2public class ChildEntity extends ParentEntity { 3 ... 4}

投稿2020/01/09 07:07

YoungTech

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

https://www.seasar.org/wiki/index.php?DomaUpdateOperationLog#pf9f57c3
DomaUpdateLogの1.34.0での変更とは関係ありませんか?

エンティティクラスが他のエンティティクラスを継承する場合、@Entityのlistener要素やnaming要素を親から引き継ぐようになりました。

java

1@Entity(listener = ParentListener.class, naming = NamingType.UPPER_CASE) 2public class ParentEntity { 3 ... 4}

java

1@Entity 2public class ChildEntity extends ParentEntity { 3 ... 4}

上記のような継承関係がある場合、上のChildEntityを注釈する@Entityの要素には何も指定されていませんが、次のような指定がある場合と同等です。

java

1@Entity(listener = ParentListener.class, naming = NamingType.UPPER_CASE) 2public class ChildEntity extends ParentEntity { 3 ... 4}

投稿2020/01/09 07:04

編集2020/01/09 07:13
YoungTech

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

理由はわかりませんが、本日(lister = BaseEntityListener.class) の部分を外して処理を動かすと
BaseEntityListenerが呼ばれなくなりました。ご協力いただいた方ありがとうございました。

投稿2018/06/19 14:59

k499778

総合スコア599

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問