1. ホーム
  2. java

[解決済み] Entity と @Table の Name 属性について

2022-10-26 12:41:31

質問

Name属性は@Entityと@Tableの両方に存在するので、私は疑問を持っています。

例えば、name属性に同じ値を指定してもいいのでしょうか?

@Entity(name = "someThing")
@Table(name = "someThing")

というように、同じクラスで異なる名前を持つことができます。

 @Entity(name = "someThing")
 @Table(name = "otherThing")

この2つの違いは何ですか?なぜ両方に同じ属性があるのですか?

どのように解決するのですか?

@Entity(name = "someThing") => this name will be used to name the Entity
@Table(name = "someThing")  => this name will be used to name a table in DB

つまり、最初のケースでは、テーブルとエンティティは同じ名前になり、HQLやJPQLを書くときに、エンティティと同じ名前でテーブルにアクセスできるようになります。

そして2つ目のケースでは、クエリを書く際に エンティティ で指定された名前と テーブル で与えられた名前はDB内のテーブルの名前に使われます。

ですから、HQLではあなたの someThing を参照することになります。 otherThing を参照します。