最近正在维护别人写的一个关于Hibernate操作数据库的项目,在运行测试的时候(向表中插入记录),报了一个错误:cannot insert a null into column(XXX字段名,下文统一用test_id表示)。错误很明显,在插入数据库的时候,该字段为null,所以插入失败!接下来需要确认以下几点:

1)查看该表的的结构,一看,果然test_id字段设置是not null。

2)定位到插入操作的代码,有点难,因为Hibernate是对数据库操作进行了封装,我没有接触过,所以不知道在哪里找。找了半天,大概理解了,不知道对不对。

3)首先它是定义了一个java类,该类继承于serializable。该类中定义的私有类成员与表中的字段一 一对应!注意是一 一对应!我看了半天才发现,test_id字段没有定义,其他都定义了!隐约觉得错误在这里!作为一名程序员的嗅觉,哈哈。所以,肯定是要加上该字段的定义!同时写上两个函数get和set。

4)但是插入操作的代码在哪里呢?于是我又通过这些字段定位到一个函数,该函数中会对以上的字段进行设置,然后出现一个save函数,不是insert函数更加直观吗?调用save函数的是一个接口类,负责对数据库进行操作。当然,插入的数据没有给test_id进行赋值,我们调用上面写的set函数进行赋值。

5)还有一个要注意的地方,还有一个xml的文件需要配置,同样要加上关于类成员的变量和表中字段对应的关系。

说得不是很清楚,还是要看代码实践才行。

修改别人写的Hibernate数据库操作代码的更多相关文章

  1. 结合java的反射和泛型性质简化JDBC和相应的同步等服务器数据库操作代码

    github地址:https://github.com/hzphzp/HeartTrace_Server 我们的服务器端数据库并没有用sqllite, 而是直接用mysql,并且用JDBC直接进行操作 ...

  2. 修改别人写的利用AOP实现日志监控的问题

    原文链接 http://blog.csdn.net/jaune161/article/details/51476138 想法 看到原文博主写的这篇文章,我感觉写的很好,可以在我们的项目中使用AOP来监 ...

  3. hibernate数据库操作基础

    1.根据主键查询 2.getSession().createSQLQuery(sql)和session.createQuery(sql) 3.Seeion的其他方法  4.Hibernate Crit ...

  4. php数据库操作代码

    数据库名为reg,表名为member,字段名为username,password,regdate <?php $link=@mysql_connect("localhost" ...

  5. 通过对DAO层的封装减少数据库操作的代码量

     在学框架之前,写项目时总是要花大量的时间去写数据库操作层代码,这样会大大降低我们的效率,为了解决这个问题,我花了两天时间利用反射机制和泛型将DAO层进行了封装,这样我们只需要写sql语句,不需要再写 ...

  6. 数据库操作类《SqlHelper》

    一.背景 在看了一本书叫<Visual Studio 2010(C#)Windows数据库项目开发>后,觉得很多编程技术需要积累,因为一个简单的项目里包含的技术太多了,容易忘记.每次需要用 ...

  7. 如何写出优雅的CSS代码 ?(转)

    对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于团队合作和后期的维护:而有的混 ...

  8. 如何写出优雅的css代码 ?

    如何写出优雅的css代码 ? 对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于 ...

  9. ballerina 学习二十九 数据库操作

    ballerina 数据操作也是比较方便的,官方也我们提供了数据操作的抽象,但是我们还是依赖数据库驱动的. 数据库驱动还是jdbc模式的 项目准备 项目结构 ├── mysql_demo │ ├── ...

随机推荐

  1. ubuntu16.04获取root权限并用root用户登录

    写在全面:如果根据以下教程涉及到只读文件需要更改文件权限才能需修改文件内容,参考我的另一篇博客:https://www.cnblogs.com/masbay/p/10744900.html中的第2条. ...

  2. soap 简单调用其他系统的函数

    <?xml version ='1.0' encoding ='UTF-8' ?> <definitions name='自定义名称' targetNamespace='目标命名空间 ...

  3. jq select 一些操作

    添加option $("#ID option").each(function(){if($(this).val()==111){$(this).remove();}}); 移除op ...

  4. Python算法(一)冒泡排序

    3 5 1 6 2 1)第一次:找到这些数中最大的一个,并把它放最后. 3.5找到大的数放到第二个位置 5.1找到大的数放到第三个位置 5.6找到大的数放到第四个位置 2.6找到大的数放大第五个位置 ...

  5. Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag.

    https://blog.csdn.net/watermusicyes/article/details/44963773 Context中有一个startActivity方法,Activity继承自C ...

  6. c# list批量添加 对象 到数据库的sql

    public void AddList(List<ProModule.Model.pro_manifest_item> list) { Hashtable SQLStringList = ...

  7. sql数据库之多库查询

    连接到数据库服务器gwsps07上,打开查询分析器,如何获取gwrenshi数据库中的数据? 查询语句如下: select * from GWRENSHI.CGC.dbo.PERempms(serve ...

  8. sql根据最小值去重

    CREATE TABLE temp2 AS SELECT MAX(id) id FROM sys_oper_procenter GROUP BY pro_title 创建一个temp2的表 根据标题分 ...

  9. jQuery 替换元素

    参考https://www.cnblogs.com/halai/p/6868027.html http://www.w3school.com.cn/jquery/manipulation_replac ...

  10. linux安装redis及主从复制、读写分离、哨兵模式

    Redis安装与部署 版本最好选择3.0及以上.以后还可以部署Redis集群. 1.下载: [root@bogon redis-3.0.0]# cd /usr/local [root@bogon lo ...