gpt4 book ai didi

java - 如何使用 Spring+Hibernate 将实体持久化到两个不同的表

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:54 25 4
gpt4 key购买 nike

我想这只适用于 Hibernate(我现在才开始使用这两个框架)。我有一个跟踪用户 session 的应用程序。当 session 处于 Activity 状态时, session 实体存储在 Activity session 的表中。当用户下线且 session 结束时, session 将移至辅助历史表。

如何使用 Hibernate 实现这一点?现在我有一个 Session.hbm.xml 文件,它将 Session 对象映射到 Activity session 表。我可以将它映射到辅助表并以某种方式指定我希望它在调用 saveOrUpdate 时保留到哪个表吗?

目前我的声誉不允许我这么快地回答我自己的问题。不过,我不想让任何人在这上面浪费时间,因为我找到了答案,所以我将其作为编辑发布在这里。

我可以通过在映射文件中使用实体名称属性来做到这一点。我创建了第二个映射,与 Session.hbm.xml 相同,称为 HistoricalSession.hbm.xml。在这个新的映射文件中,我引用了相同的 Session 类,但添加了:

entity-name="HistoricalSession"

然后我像往常一样将该对象映射到我的第二个(历史)表。调用 save() 或 saveOrUpdate() 默认使用类名作为实体名称,并像以前一样保存在我的主表中。现在,当我想将 session 保存到历史表时,我使用允许您指定实体名称的 Hibernate API 覆盖:

saveOrUpdate("HistoricalSession",session);

这完全符合我的要求,无需为历史 session 创建另一个 Java 类

最佳答案

我可以通过在映射文件中使用实体名称属性来做到这一点。我创建了第二个映射,与 Session.hbm.xml 相同,称为 HistoricalSession.hbm.xml。在这个新的映射文件中,我引用了相同的 Session 类,但添加了:

entity-name="HistoricalSession"

然后我像往常一样将该对象映射到我的第二个(历史)表。调用 save() 或 saveOrUpdate() 默认使用类名作为实体名称,并像以前一样保存在我的主表中。现在,当我想将 session 保存到历史表时,我使用允许您指定实体名称的 Hibernate API 覆盖:

saveOrUpdate("HistoricalSession",session);

这完全符合我的要求,无需为历史 session 创建另一个 Java 类

关于java - 如何使用 Spring+Hibernate 将实体持久化到两个不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9571691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com