Hibernate/Spring で単一のモデル クラスとして扱いたい 2 つのテーブルがありますが、それらの唯一の関係は 3 番目のテーブルを介して確立できます。例えば...
tableA {
id integer <PK>
username varchar2(25 byte)
}
tableB {
personID varchar2(15 byte) <PK>
divisionID integer
positionID integer
}
tableC {
personID varchar2(10) <FK>
username varchar2(25 byte)
}
personID を tableA の列として単純に追加できれば非常に便利ですが、状況によっては許可されません。ただし、以下のような休止状態の 1 つのモデルを使用してこれらのテーブルを操作したいと思います...
@Entity
@Table(name="tableA")
public class myTable {
@Id
@GeneratedValue
private int id;
private String username;
@Formula("(select distinct tableC.personID from tableC where upper(tableC.username) = upper(THIS_.username) and tableC.personID is not null)")
String personID;
@Formula("(select distinct tableB.divisionID from tableB where tableB.personID = THIS_.personID)")
int divisionID;
@Formula("(select distinct tableB.oositionID from tableB where tableB.personID = THIS_.personID)")
int positionID;
//getters, setters, etc...
}
ここに書いた方法は不可能であることはわかっています。ただ、その考えを伝えようとしているだけです。後でデータベースを保存または更新するときに、Hibernate が各属性の適切なテーブルを更新できるようにしたいと考えています。
@Transient、@SecondaryTables、および他のいくつかを使用して調査しましたが、これを機能させる良い方法が見つかりませんでした。私がやりたいようにこれを行うことは可能ですか?もしそうなら、どのアプローチ/注釈を使用する必要がありますか? そうでない場合、どのような代替アプローチをとるべきですか? 私はHibernateとSpringに比較的慣れていないので、ご容赦ください。