当前位置: 首页 > 面试题库 >

具有xml映射的Hibernate派生属性

艾俊晖
2023-03-14
问题内容

我有一个Detectable带有Revisions集合的类,它们是Hibernate管理的POJO。我还使用 hbm.xml
文件映射了我的实体。当用户转到Detectable管理屏幕时,我希望他将Detectable数据查看到表中,该表还将包含最近Revision完成的工作。但是,只有访问可检测内容的详细信息页面,才能使用完整的修订集。

我的机会是显示最后的修订日期,该日期将作为每个Detectable实例的属性单独加载。所以我有这样的事情:

detectable.hbm.xml

<set name="_Revisions" table="trevision" inverse="true" lazy="true">
    <key>
        <column name="id_detectable" />
    </key>
    <one-to-many class="com.company.model.tasks.Revision" />
</set>

<property name="_LastRevisionDate"
        formula="select max(rev.start_date) from trevision rev where rev.id_detectable = _Id"
        type="date" />

这是行不通的,当hibernate尝试执行 公式中
包含的查询时,我遇到了SQL语法错误。我已经在不同的地方看到可以使用标准SQL来访问此属性,但是我两个都失败了。还可以Revision仅按日期顺序实现整个实体(我是指最新修订版)吗?

汇集您的想法!


问题答案:

我终于用以下代码实现了它:

<property name="_LastRevisionDate"
        formula="(select MAX(rev.start_date) from trevision rev where rev.id_detectable = id_detectable and rev.status != 'DRAFT')"
        type="date" />

id_detectable我当前的实体密钥列在哪里。

更新

另一个解决方法是使用数据库视图获取最近的修订日期。然后,可以选择将实体映射到该视图而不是原始表。



 类似资料:
  • 问题内容: 我有一个带有集合的类,它们是Hibernate管理的POJO。我也在使用 hbm.xml 文件映射我的实体。当用户转到管理屏幕时,我希望他将数据查看到表中,该表还将包含最近完成的工作。但是,只有访问可检测内容的详细信息页面,才能使用完整的修订集。 我的机会是显示最后的修订日期,该日期将作为每个实例的属性单独加载。所以我有这样的事情: detectable.hbm.xml 这是行不通的,

  • 问题内容: 在我的applicationContext.xml中,这就是将xml映射到POJO的方式。如何将目录映射到类文件而无需创建xml? 问题答案: 您可以通过转换进一步简化操作 至 现在您的包中所有带有注释的类都将自动被拾取。

  • 问题内容: 使用Hibernate,可以创建一个组合ID,其中要映射到该ID的列之一可以为空值吗? 这是为了处理具有唯一键的旧表,该键可以具有空值,但不能具有主键。 我意识到我可以只向表中添加一个新的主键列,但是我想知道是否有任何方法可以避免这样做。 问题答案: 否。主键不能为null。

  • 这是我的employee.hbm.xml: 所以,您可以注意到,在我的类中,它没有“id”属性。但是,我在数据库中创建id列,让它成为自动生成的主键。在这种情况下,我不知道应该在将我的类映射到我的数据库。如果我忽略了它,会不会是后来的一些问题呢?

  • 我正在使用Hibernate和JPA注释来映射我的类。当hibernate尝试映射这个类时,我遇到了一个问题 我的Social alStat类是: 我得到了这个错误: 我猜发生这种情况是因为我试图映射到一个基本类,但@ElementCollection注释不应该解决这个问题吗? 我的item类如下所示:

  • 我需要在我现有的Spring Boot 1.2.5应用程序中编写一些临时代码来执行一些复杂的SQL查询。所谓复杂,我指的是关于4个不同表的单个查询,我有很多这样的表。我们都决定使用现有的SQL来降低新查询出错的潜在风险,在这种情况下,这是一个很好的方法。 我的应用程序使用JPA / Hibernate并将一些实体映射到表。从我的研究来看,似乎我必须做很多实体映射。 我尝试编写一个类,该类只获取Hi