Caused by: java.sql.BatchUpdateException: ORA-01461: can bind a LONG value only for insert into a LONG column有的字段类型不匹配了吧。你查询用的是sql啊不是hql,把Users的包名带上,UserID也是字段名把,类似
from package.Users u where u.usersID=361

解决方案 »

  1.   

    ORA-01461: can bind a LONG value only for insert into a LONG column
    是不是你的Users表中有LOB数据呀
      

  2.   

    我原以为是字符集的问题,就把数据库的字符集相应的改一下:把NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET的值都改为:ZHS16GBK;原来NLS_CHARACTERSET为ZHS16GBK,NLS_NCHAR_CHARACTERSET为AL16UTF16;改过以后在我的程序里,就可以查出有中文的记录,但是插入中文数据的时候还是报相同的错(前面已经列出来的错误提示)。
    我的表结构如下:
    Users表
    -------------------------------
    UserID Number,
    UserName VARCHAR2(16),
    UserNickName VARCHAR2(16),
    Description VARCHAR2(256)
    ---------------------------------
    程序插入方法如下:
    Context context = new InitialContext();
    String contextName = Utils.getContextName(DataDAO.class);
    DataDAO dataDAO = (DataDAO)context.lookup(contextName);Users user=new Users();
    user.setUserName("世界");
    user.setUserNickName("世界2");
    user.setDescription("sdlkfs");
    dataDAO.merge(user);          //调用EntityManager的方法merge把数据更新到数据库  
    *********************
    Users 为实体BEAN,UserID 我用到了序列,EJB自动处理,在上面不用显式给它赋值(相当SQL SERVER2000的自增长字段)现在那个错误我还弄不明白是什么意思,不知道是不是ORACLE字符值的问题还是JDBC驱动的问题.....
      

  3.   

    好像提交插入操作的时候将中文转换成long类型了。
      

  4.   

    更新一下jdbc的驱动试试。。我的程序在xp+oracle10g有问题,在2k+oracle9i下没问题