Hibernate查询出现java.lang.IllegalArgumentException异常解决方法

本文解决Hibernate查询中出现的java.lang.IllegalArgumentException问题,通过将java数据类型从long或double改为Long或Double,成功避免空值存储导致的错误。重点介绍了Oracle数据字段与Java数据类型的兼容性问题,提供了具体的解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate查询出现java.lang.IllegalArgumentException。

异常信息如下:
java.lang.IllegalArgumentException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPro
pertyAccessor.java:66)

解决办法:
hiberate反程工程生成注释实体类,java数据类型为long或double。
必须改成大写的Long或Double,否则查询会出错。

这是因为oracle数据字段有空值,但long和double类型不能存储空值,而Long和Double可以存储空值。

转载于:https://www.cnblogs.com/janehlp/p/3371648.html

### Java中 `IllegalArgumentException` 异常的原因及解决方案 #### 一、异常原因分析 `java.lang.IllegalArgumentException` 是一种常见的运行时异常,通常表示传递给方法的参数不符合预期。具体到 “No origin bean specified”,其主要原因是调用了某些工具类(如 Apache Commons BeanUtils 或 Hibernate 的相关功能),但在操作过程中未正确提供源对象或目标对象。 以下是可能引发此问题的具体场景及其成因: 1. **Bean 工具类使用不当** 当使用像 `BeanUtils.copyProperties()` 方法时,如果源对象(即 origin bean)为空,则会抛出此类异常[^4]。 2. **Struts 配置错误** 如果 Struts 应用中的 Form Bean 没有被正确初始化或者缺少必要的属性定义,也可能触发类似的异常。例如,在配置文件中遗漏了 Action 名称或表单名称的映射关系[^3]。 3. **Spring 容器依赖注入失败** 虽然当前问题是关于 `IllegalArgumentException`,但如果涉及 Spring 上下文中组件扫描与自动装配机制失效的情况,也会间接导致类似行为发生。比如某个服务层接口未能成功绑定其实现类实例至容器内,进而影响后续逻辑执行链路正常运转[^2]。 #### 二、解决办法详解 针对上述提到的各种可能性,下面给出相应的处理措施: ##### (1)确保源对象已正确定义并赋初值 对于需要复制属性的操作而言,务必确认参与交换过程两端实体均已存在且状态良好。以如下代码为例展示如何安全地完成数据迁移任务前准备工作: ```java // 创建源对象实例 ProductInfo productInfo = new ProductInfo(); productInfo.setId(1L); productInfo.setName("Sample Product"); // 初始化目标承载载体 ProductInfoBO productInfoBO = new ProductInfoBO(); // 执行属性拷贝动作之前验证两者均非null if (productInfo != null && productInfoBO != null){ try { BeanUtils.copyProperties(productInfoBO, productInfo); // 正确做法 } catch (IllegalAccessException | InvocationTargetException e) { throw new RuntimeException(e.getMessage(),e); } } else{ System.out.println("Either source or destination object is not initialized properly."); } ``` ##### (2)修正框架级设定失误 如果是由于 Web 开发环境下的特定技术栈设置偏差所引起的话,则需按照官方文档指引逐一排查潜在风险点。例如调整 struts.xml 文件内容使之匹配实际项目结构需求;另外还需留意版本兼容性方面是否存在冲突现象等问题[^1]^。 ##### (3)优化 DI/IOC 设计模式应用实践 当面对复杂业务场景需要用到依赖注入(Dependency Injection)/控制反转(Inversion Of Control)设计理念构建应用程序架构体系之时,应该遵循最佳编码习惯来减少不必要的麻烦。这包括但不限于显式声明所需协作伙伴类型提示符(@Autowired,@Resource),合理安排包路径以便于扫描加载候选者列表等等[^2]. #### 总结陈词 综上所述,“java.lang.IllegalArgumentException: No origin bean specified”的根本症结在于缺乏有效的输入参数支持从而致使函数无法继续向下推进工作流程直至崩溃告终。通过采取针对性预防手段可以有效规避这类状况再次上演——无论是从基础层面着手完善个体构件质量还是站在全局高度统筹规划整体布局都不可或缺。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值