首页 > 代码库 > 小学生之Hibernate插入数据修改数据使用数据库默认值的实现

小学生之Hibernate插入数据修改数据使用数据库默认值的实现

最近在写一个案例,定时任务对数据库进行更新操作,废话不多说,上代码:

 1 @Component("taskJob")
 2 public class TaskJob extends HibernateDaoSupport {
 3     
 4     @Resource
 5     private SessionFactory sessionFactory;
 6 
 7     @PostConstruct
 8     public void init() {
 9         setSessionFactory(sessionFactory);
10     }
11     
12     @Scheduled(cron = "0 0/1 * * * ?")
13     @Transactional
14     public void jobl() throws InterruptedException {
15         System.out.println("任务开始执行....");
16         this.getHibernateTemplate().execute(new HibernateCallback() {
17 
18             public Object doInHibernate(Session session)
19                     throws HibernateException {
20                 session.createSQLQuery("truncate table tm_org").executeUpdate();
21                 return null;
22             }
23         });
24         System.out.println("删除完毕........");
25         Thread.sleep(1000);
26         final File file = new File("C:\\Users\\lhq\\Desktop\\T1018.txt");
27         BufferedReader reader = null;
28         try {
29             System.out.println("以行为单位读取文件内容,一次读一整行:");
30             reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
31             String tempString = null;
32          // 一次读入一行,直到读入null为文件结束
33             while ((tempString = reader.readLine()) != null) {
34                 final String[] split = tempString.split("\\s+");
35                 Org org = new Org();
36                 org.setOrgCode(split[0]);
37                 org.setOrgName(split[1]);
38 //                org.setStatus("0");
39                 if (split.length>3) {
40                     org.setUpOrg(split[3]);
41                 }
42                 org.setCreator("superuser");
43                 this.getHibernateTemplate().persist(org);
44                 
45             }
46             reader.close();
47             
48         } catch (final IOException e) {
49             e.printStackTrace();
50         } finally {
51             if (reader != null) {
52                 try {
53                     reader.close();
54                 } catch (final IOException e) {
55                 }
56             }
57         }
58     }
59 }

最开始执行完操作的时候,技术分享这一行是没有的,因为我在数据库中设置了默认值,

控制台上就给我报错,如图:

技术分享

为了程序的运行,我把这行手动添加上了,今天仔细一想,应该有办法解决这个问题,就上网找了N多个文字,都没有具体找到实现方法,大多都是配置文件形式的(这年头谁还用配置文件,都用注解了),后来千辛万苦找到一个解决方案,如图:

技术分享

于是我就照葫芦画瓢,也这么写,然后发现是这样的:

技术分享

一看就知道是过时的方法,为了程序的执行没有管他,run起来也没有问题,之后我又看了一下源码发现4.1版本的时候移除了:

技术分享

然后我发现这里面每个字段上有这么一句:

技术分享

意思就是用{}里面的替换了,于是就改成了这样:

技术分享

当然也是没问题。

就是跟大家分享一下经验,帮助需要的人提供方案.

 

小学生之Hibernate插入数据修改数据使用数据库默认值的实现