0

我有三张桌子

客户、关系、状态

在我的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不去数据库的情况下获得该 ID 并将该 ID 保存在我的Client表中?

4

1 回答 1

0

您可以尝试在注释中指定cascade参数:@ManyToOne

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

它默认没有级联操作。

于 2012-11-22T12:00:28.350 回答