Oracle中Number类型映射成Java中的具体类型(Can not set field to ... )

时间:2025-03-28 11:39:58

spring-data-jpa实体类映射LONG类型到ORACLE是NUMBER类型, 通过jdbcTemplate查出的NUMBER类型默认映射的是java的类型, 需要手动转换:

    /**
     * 将简单的map映射成bean对象
     * @param data
     * @param clazz
     * @return
     * @throws Exception
     */
	public static <T> T changeMapToUpCaseBean(Map<String,Object> data,Class clazz){
        try {
            List<Field> fields = listAllFields(clazz);
            T bean = (T) ();
            if (fields != null && () > 0) {
                for (Field field : fields) {
                    String name = ().toUpperCase();
                    Object value = (name);
                    // oracle的NUMBER类型,默认映射类型属性, 需要转化为LONG
                    if("".equals(().getName())){    
                    	value=(());
                    }
                    if (isEmpty(value)) {
                        continue;
                    }
                    (bean, value);
                }
            }
            return bean;
        }catch (Exception e){
            throw new RuntimeException(e);
        }
    }

 

对于Oracle中Number类型的字段映射成Java中的具体类型的问题

/lz2017/p/