当前位置: 首页 > 知识库问答 >
问题:

Hibernate在HQL中需要错误的参数类型

阎修明
2023-03-14

我们有一个实体的层次结构,例如,抽象Basket和两个concrete,它们又可以包含一些其他项的列表,例如,具有完全相同的层次结构(SaleBasketItem,ReturnBasketItem)。

@Entity
@XStreamAlias("basket")
@DiscriminatorColumn(name = "basket_type")
@DiscriminatorOptions(force = true)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class Basket<T extends BasketItem> 

@Entity
@DiscriminatorValue(value = "SALE")
public class SaleBasket extends Basket<SaleBasketItem> 

@Entity
@DiscriminatorValue(value = "RETURN")
public class ReturnBasket extends Basket<ReturnBasketItem> 

@Entity
@Table(name = "basket_item")
@XStreamAlias("basket_str")
@DiscriminatorColumn(name = "basket_item_type")
@DiscriminatorOptions(force = true)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class BasketItem<U extends BasketItem, V extends Basket>

@Entity
@DiscriminatorValue(value = "RETURN")
public class ReturnBasketItem extends BasketItem<ReturnBasketItem, ReturnBasket>


@Entity
@DiscriminatorValue(value = "SALE")
public class SaleBasketItem extends BasketItem<SaleBasketItem, SaleBasket>

因此,当我尝试执行hql查询时,问题就出现了

"SELECT bi FROM " + basketType + "BasketItem bi JOIN bi.basket b JOIN b.saleSession JOIN bi.ware w WHERE b.state = :state"

其中baskettype动态地为“sale”或“return”。然后,我将该查询放入TypedQuery中,其类型为我需要的BasKetItem,并尝试SetParameter(“state”,state),其中state是表示混凝土篮状态的一些枚举(每个混凝土类都不同,在抽象类中根本不存在),它抛出

IllegalArgumentException(java.lang.IllegalArgumentException:参数值...不匹配类型)

其中类型为ReturnBasketState,而actual为SaleBasket状态,反之亦然。

所以问题是--如何强制Hibernate为该参数期望正确的类型?

共有1个答案

丁光华
2023-03-14

我想它应该是一个字符串作为参数,而不是一个枚举。请尝试传递字符串。

 类似资料:
  • 问题内容: 我正在尝试使用post请求将用户保存到mongodb数据库,如下所示,但我收到错误bcrypt错误:需要数据和哈希参数。这是代码的非常简单的设置,但我不知道它有什么问题。models / users.js 路线/users.js 服务器正在运行,但是在使用邮递员chrome后显示请求错误,并且服务器停止工作,如图中所示。 问题答案: 错误来自方法。就您而言,您具有以下代码段: 我认为您

  • 请看一下这段代码。最后一行出现了一个错误,因为我传递的是一个“索引”而不是一个资源。我以为是皮毛的问题,试图压制它。然后我注意到只有在构建发布时才会出现这个错误。它在构建调试时工作良好。我完全一无所知。谁能告诉我我做错了什么。

  • 我有一个问题需要帮助,我有下面的python脚本,并尝试将值传递给DateTime.date。 这返回 现在,我要将传递给。但是,我得到了一个错误: 错误:

  • 我不知道我做错了什么。。。我得到了球员的错误。draw()函数。它所说的不好的争论是在爱情中。图样矩形()方法。这意味着v.x是一个糟糕的论点。但它应该起作用。v.x和v.y都应该工作。因为它访问表或数组中元素的字段,对吗?有人能告诉我我做错了什么,以及如何解决这个问题吗?非常感谢!这是我的代码:

  • 问题内容: 我正在学习带有快速模板引擎的node.js,正在遵循udemy课程“通过构建10个项目来学习node.js”,而在讲座中,当教授开始运行时,我的弹出错误指示 app.use需要 我尝试过的 中间件功能 匹配的代码及其相同。请帮助我解决错误,我已经在这里停留了几个小时,尝试了许多修改,但对我不起作用。 当我尝试运行“ npm start”时,弹出以下错误 TypeError:app.us