enum State
{
UP,
DOWN,
RETRY
};
private static boolean isValidBindValue(Class expectedType, Object value, TemporalType temporalType) {
if ( expectedType.isInstance( value ) ) {
return true;
}
...
return false;
}
它打印出枚举
值的等效字符串
,这是因为这一行:
String.format("Parameter value [%s] did not match expected type [%s (%s)]",
bind,
parameterType.getName(),
extractName( temporalType )
)
通过调用表示枚举状态的
。对象
上的ToString
方法,将绑定
对象隐式转换为字符串值。请重试
那么,如何使Hibernate相信state.retry
是state
的实例?
@Basic(optional = false)
@Column(name = "state")
@Enumerated(EnumType.String)
private State state;
我的RetryState
枚举是由早期ClassLoader
加载的。而query
由URLClassLoader加载,EntityManager
由另一个类加载器加载。
我猜主要问题是您试图在数据库端使用枚举数据类型。不推荐这样做,因为它通常需要一个专有的枚举类型,而JPA实现(例如Hibernate)可能不太支持这个类型。有关详细信息,请参阅类似问题的答案。
此外,使用注释
@Enumerated(EnumType.String)
您是说您明确希望将该值保存为数据库中的字符串。如果真正的列类型是某个枚举,我希望这会失败。也许Hibernate代码更改试图通过强制您使用varchar或integer列来防止这些问题。
@Basic(optional = false)
@Column(name = "state", columnDefinition = "enum('UP','DOWN','RETRY')")
@Enumerated(EnumType.String)
private State state;
您可以尝试通过hibernate XML映射文件指定枚举类:
<property name="type" column="type" not-null="true">
<type name="org.hibernate.type.EnumType">
<param name="enumClass">package.name.State</param>
<param name="type">12</param>
<!-- 12 is java.sql.Types.VARCHAR -->
</type>
</property>
另见:
当我想跑的时候: 我得到: 执行操作“MappingAddAction”的服务异常,java.lang.IllegalArgumentException:参数值[5118]与预期的类型[com.vernuso.trust.server.domain.ClientImport.MappingInfo(N/A)]不匹配 有人能帮助我理解为什么它需要类型而不是类型吗? 我有两个表,如下图所示。Mappi
我做错了什么? 正在更新: 我发现了问题所在。问题与ActionRepository中找到的函数有关。函数的签名首先要求两个日期进行比较,然后id和我给出了相反的值。我很清楚,在我上了它之后,我会有一个问题的日期,所以答案确实帮助了我。谢谢大家!
我得到的错误. 我对此感到困惑,因为它来自下面显示的被注释掉的服务方法。当我把它注释掉时,错误就避免了。列是一个,即或。 实体: 我的存储库: 我的服务: 当我取消注释时
这是我运行程序时收到的错误: 注:[19533]是我使用的一个测试值。 这是在CustomerServiceBeanImpl.java中出现错误的方法: 在快速检查ERD时,“Customer”表中的“id”列的数据类型为bigint。然而,我不确定这是否重要。(顺便提一下PostgreSQL数据库。) 如何修复此错误?
问题内容: 我收到以下错误 java.lang.IllegalArgumentException: Parameter value [2] did not match expected type [com.cityBike.app.model.User (n/a)] at org.hibernate.jpa.spi.BaseQueryImpl.validateBinding(BaseQueryIm
我在请求服务线路时收到此错误: 错误:组织。springframework。道。InvalidDataAccessApiUsageException:参数值[5]与预期类型[nz.webshop.models.Customer.Customers(不适用)]不匹配;嵌套的异常是java。lang.IllegalArgumentException:参数值[5]与预期类型[nz.webshop.mod