如何在Hibernate XML映射中使用序列?
文档中提到了<generator>
元素。但是,我希望序列是列而不是ID。
我知道将Hibernate与Oracle一起使用时,映射文件中的ID定义为:
<id name="id" column="item_id">
<generator class="sequence">
<param name="sequence">NAME_OF_YOUR_SEQUENCE</param>
</generator>
</id>
您还可以将生成器类指定为“本机”,如果您随后切换到自动递增的RDMS(例如MySQL),则将非常方便。然后在MySQL中忽略序列位。
编辑: 重新阅读您的问题。我不认为hibernate处理非id列上的序列。我所看到的一般方法是向表中添加触发器,但这不是一个好的解决方案。
是否可以使用Hiberanate映射数据库列,这样我就可以在HQL查询中使用它,但不能将它映射到映射类中的实际属性? 由于数据库强加给我们的表名和列名类似于hashcodes,我们希望使用HQL进行更新,它可以使用漂亮的映射名称。因此,我们需要在Hibernate中映射列。
这是我的employee.hbm.xml: 所以,您可以注意到,在我的类中,它没有“id”属性。但是,我在数据库中创建id列,让它成为自动生成的主键。在这种情况下,我不知道应该在将我的类映射到我的数据库。如果我忽略了它,会不会是后来的一些问题呢?
问题内容: 标题中几乎说了出来。我有一堂课,看起来像这样: 使用Oracle 11g,该列为a ,但序列产生一个a 。数据库显然对此感到满意,但是应用程序需要能够支持可能已插入到应用程序外部此列中的非数字ID。 考虑上面的代码,我得到一个。有什么办法可以做这种映射吗? 使用Hibernate 3.6。 问题答案: 实现一个自定义的IdentifierGenerator类;从博客文章: 像这样注释实
在我的数据库表中,我有一个列,它的内容可以是Y或N(CHECK约束)。我在Java中定义了一个String属性,在我的类中定义了一个基于String的setter。此外,为了方便起见,我添加了一个带有布尔参数的setter/getter。 那么,Hibernate基于什么属性进行映射呢?方法名称?参数名称?参数类型?在setter中使用可以吗?如果我的属性的名称与表列的名称不同,这会有什么不同吗?
问题内容: 我有一个带有集合的类,它们是Hibernate管理的POJO。我也在使用 hbm.xml 文件映射我的实体。当用户转到管理屏幕时,我希望他将数据查看到表中,该表还将包含最近完成的工作。但是,只有访问可检测内容的详细信息页面,才能使用完整的修订集。 我的机会是显示最后的修订日期,该日期将作为每个实例的属性单独加载。所以我有这样的事情: detectable.hbm.xml 这是行不通的,