私は3つのテーブルを持っています
クライアント、関係、ステータス
私のClient
エンティティの中で、私は持っています
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "relationId")
private Relation relationId;
と
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "statusId")
private Status statusId;
関係エンティティとステータス エンティティには getter/setter のみがあり、関係はありません。
ここでクライアントを保存/更新しています。これにより、この関係も保存/作成したいと思います
Session session = sessionFactory.openSession();
try
{
Transaction tr = session.beginTransaction();
updatedClient = (Client) session.get(Client.class, id);
updatedClient.setClientPostCode(client.getClientPostCode());
updatedClient.setRelationId(client.getRelationId());
session.saveOrUpdate(client.getRelationId());
session.update(updatedClient);
tr.commit();
}
このコードに例外はなく、Client
正常に保存され、Relation
正常に作成されましたが、作成された はクライアントのテーブルの列にrelationID
割り当てられていません。relationID
このコードで作成されたリレーションにはrelationID
(primarykey: 3) がありますが、 のrelationId
列でClient
は、値が常に保存されてい0
ます3
。
私が間違っていることは何か分かりますか?
relationId
この行の後に取得することはできませんか?
session.saveOrUpdate(client.getRelationId());
relationId
DBに行かずに取得して、そのIDをClient
テーブルに保存するだけですか?