0

私は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());

relationIdDBに行かずに取得して、そのIDをClientテーブルに保存するだけですか?

4

1 に答える 1

0

注釈でcascadeパラメーターを指定してみてください。@ManyToOne

@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)

デフォルトでは、カスケード操作はありません。

于 2012-11-22T12:00:28.350 に答える