名前属性が@Entityと@Tableの両方にあるため、疑問があります。
たとえば、name属性に同じ値を設定できます
@Entity(name = "someThing")
@Table(name = "someThing")
同じクラスに異なる名前を付けることもできます
@Entity(name = "someThing")
@Table(name = "otherThing")
これら2つの違いと、両方に同じ属性がある理由を誰かに教えてもらえますか?
名前属性が@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の場合にはあなたが与えられた名前を使用する必要があり、クエリの書き込み中に@Entityで指定し、名前@Tableを DB内のテーブルに名前を付けるために使用されます。
したがって、HQLでは、someThingはDB内の他のThingを参照します。
@Tableのname属性は、実際のテーブル名です。@Entitiyの名前は、同じ名前の@Entityクラスが2つあり、クエリを実行するときにそれらを区別する方法が必要な場合に役立ちます。