0

我有一个 Web 应用程序,我在其中使用 Hibernate 来保持数据库的持久性。这是一个简单的项目,有一个 POJO,它的 Hibernate-Mapping 到 MySQL-Server 上的一个表和一些其他相关的东西。

我需要从 POJO 中提取不同的属性,并以某种格式将它们提供给我的用户。所以我的问题是,如何以最简单和最安全的方式做到这一点?是否可以为同一个 POJO 构建第二个映射文件但仅具有相关属性,因此如果用户调用相应的方法,则只有第二个映射文件起作用并且仅显示选择的属性,而不是每个人,哪些是通过第一个和标准映射文件映射的?这似乎合乎逻辑,但我想知道,会话是否有任何问题?

还是我应该构建第二个 POJO+第二个映射?但是我怎么能保证在现有的唯一一张桌子上不会有任何不一致呢?

4

1 回答 1

2

您只能在应用程序的不同安装中为同一个 pojo 拥有不同的映射文件。在一个应用程序中,即在一个 hibernate.cfg.xml 文件中,一个 pojo不能被多次映射。

这样做的技术原因是,Hibernate 使用该类在其缓存中查找实例。如果同一个 pojo 被映射两次,那么它也会找到错误映射的实例。这可能会引发奇怪的结果,例如 Query.uniqueResult() 中的异常,即使表中只有一个条目,或者 Query.list() 找到两个条目。

你可以做的是:你为你的 pojo 定义一个基类(可能是一个抽象类),它具有所有公共属性并且从不被映射。然后你从这个基类扩展的每个用户pojo(它甚至可以是一个空扩展,即不需要添加任何功能,主体可以是空的),你为这些不同的用户pojo类创建不同的映射文件。

于 2013-01-18T15:13:38.770 回答