首页 > 解决方案 > 使用条件通过休眠注释将最新记录映射到对象类

问题描述

我试图只让一个对象由多列映射。

简化 - 我有 2 个表:

1) dict_warehouse_item 列:item_id、date、sequence_prefix 和 sequence_nb ...

2) 带有列的warehouse_document_item: ... document_id、item_prefix 和 item_nb ...

warehouse_document_item表中我没有item_id,但我有item_prefixitem_nb。不幸的是,它可以指向该项目的多个版本。我将选择哪一个并不重要,但我需要将它映射到一个。假设我希望它是最新的(按date)。

闲散的代码给出了一个错误:

“org.hibernate.mapping.Formula 不能转换为 org.hibernate.mapping.Column”

@ManyToOne(fetch=FetchType.LAZY)
@JoinFormula(value = "SELECT wi.item_id FROM dict_warehouse_item wi 
 WHERE (wi.sequence_prefix = item_prefix AND wi.sequence_nb = item_nb) 
 ORDER BY wi.date DESC LIMIT 1", referencedColumnName = "item_id")
public DictWarehouseItem getDictWarehouseItem() {
    return this.dictWarehouseItem;
}

有人可以帮我解决这个问题吗?

标签: javahibernatehibernate-mapping

解决方案


推荐阅读