1. 程式人生 > >Hibernate配置檔案中資料型別date與timestamp區別

Hibernate配置檔案中資料型別date與timestamp區別

例如:

<property name="createDate" type="timestamp" column="createDate"/>

<property name="createDate" type="date" column="createDate"/>

那麼,使用了 date型別,不能儲存時分秒,就使用了timestamp就能儲存時分秒了。

Hibernate在儲存和更新Date型別的資料到資料庫的時候,如果設定不當,會捨棄時分秒,和資料庫中Date型別的精確度不符(如Oracle的Date是帶時分秒的).

引起的原因主要是mapping檔案中的欄位型別被設成了type="date",而mapping檔案一般都是通過hibernate提供的工具生成的,hibernate提供的工具預設把資料庫端date型的欄位設成type="date".從而Hibernate在用JDBC做資料庫更新的時候會用 statement的setDate(index, sqlDate),插入資料庫的日期只有年月日.

下面的JDBC程式碼演示了這個問題:

            String sql = "UPDATE Timetest T SET T.datev=? WHERE T.id=?";
            stmt = conn.prepareStatement(sql);

            // java.sql.Date sqlDate = new java.sql.Date(26,7,2010);
            // sqlDate.setTime(System.currentTimeMillis());
            // stmt.setDate(1, sqlDate); //如果是用setdate的方式,時分秒會被捨棄


            //用setTimestamp的方式,時分秒會被儲存
            stmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));

            stmt.setLong(2, 1L);
            stmt.executeUpdate();
            conn.commit();

使用時需要注意的問題:

1,如果是用Hibernate的物件來影射資料庫操作(save,load..),需要將mapping檔案的type="date"改成type="timestamp".

2,如果用Query(session的createQuery和createSQLQuery),在賦值的時候用query.setTimestamp(0, new Date());



相關推薦

Hibernate配置檔案資料型別datetimestamp區別

例如: <property name="createDate" type="timestamp" column="createDate"/> <property name="createDate" type="date" column="createDat

記錄一下:Hibernate配置檔案資料庫欄位的對應型別

    說在前面:在學習Hibernate的過程中,經常要對資料表的欄位進行對映的配置,不管是通過註解的方式,還是xml檔案配置的方式,不可避免的要對資料表的欄位型別進行配置說明。本人在配置的過程中,對於java屬性為boolean的欄位進行資料庫配置時總是記不住,每次都是

VHDL資料型別轉換移位(STD_LOGIC_ARITHNUMERIC_STD)

1. VHDL目前常用庫檔案 目前寫VHDL程式時,大部分人已經熟悉的庫呼叫如下所示: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsi

程式讀取配置檔案資料顯示在頁面上

1.首先在配置檔案中增加要讀取的資料 cas.cmCustPayment.receiptInvoiceName=\u9996\u94A2\u667A\u65B0\u8FC1\u5B89\u7535\u78C1\u6750\u6599\u6709\u9650\u516C\u53F8 ca

Hibernate 配置檔案的方言

在配置hibernate.cfg.xml時需指定使用資料庫的方言: 例: org.hibernate.dialect.MySQL5Dialect 以下是各資料庫對應的方言(Dialect): 資料庫 方言(Dialect) DB2 org.hibe

Hibernate配置檔案配置MySQL編碼問題

個人小菜鳥一枚,在使用Hibernate配置MySQL資料庫時,發現又出現中文亂碼問題.於是乎不管三七二十一,在jdbc的url路徑後面新增上 ?useUnicode=true&amp;characterEncoding=utf-8;  但是Hibernate卻報錯

Node.js專案的package.json配置檔案的devdependencies 和 dependencies的區別

1、dependencies和devDependencies 具體程式碼如下 "name": "webpack-react-express", "version": "0.2.0", "private": true, "dependencies": {

如何獲取web專案hibernate.cfg.xml配置檔案資料

有時候想要獲取hibernate.cfg.xml配置檔案中的資料,網路上有很多方法,有的很複雜,這裡我介紹一種很簡單的獲取方法。 hibernate.cfg.xml配置檔案中有連線資料庫所需的各種資訊,比如這裡要獲取connection.url欄位對應的url資料,如下所示

@PropertiesSource註解讀取配置檔案資料

這是properties配置檔案。 資料結構。   注入物件。 或者:   使用物件獲取屬性值。 或者:   瞭解:=========================================

mysqldatetime、datetimestamp資料型別區別

1、datetime資料型別表示同時包含日期和時間。 mysql檢索並且以'YYYY-MM-DD HH:MM:SS'格式顯示datatime值,支援的範圍是'1000-01-01 00:00:00'

java資料型別在堆的儲存

1.基本資料型別 eg:int i=1; 基本資料型別都存在棧中,它並沒有建立物件,只是將值放入變數的引用中。 2.引用型別         2.1  String a="abc"; //實際上a是引用變數,"abc"是物件(其實也算不上物

SpringBoot如何將類屬性配置檔案配置進行繫結

1 匯入配置檔案處理器,配置檔案進行繫結就會有提示。<dependency> <groupId>org.springframework.boot</groupId&

無法為具有固定名稱“System.Data.SqlClient”的 ADO.NET 提供程式載入在應用程式配置檔案註冊的實體框架提供程式型別“System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer”。請

Windows服務中程式釋出之後會如下錯誤: 無法為具有固定名稱“System.Data.SqlClient”的 ADO.NET 提供程式載入在應用程式配置檔案中註冊的實體框架提供程式型別“System.Data.Entity.SqlServer.SqlProviderServices, EntityFra

hibernate config配置檔案mapping的檔案找不到

Hibernate.cfg.xml檔案存在src根目錄下 <mapping file="com\yjw\domain\Student.hbm.xml"/> 找不到該檔案 若寫成src\com\abc\domain\Student.hbm.xml就可以了 後發現

C語言java語言資料型別的差別總結

在學習java的時候,看到char ch =  '男' ;我就覺得很奇怪,char型別不是佔用一個位元組嗎?為什麼定義成一個漢字被說成是一個字元了?原來,在C語言中,char在32位作業系統下佔用1個位

spring配置檔案classpathclasspath* 的區別

lib和classses下檔案訪問的優先順序 lib>classes 對於效能的影響不在這個裡面: classpath與classpath*區別 classpath:只會在你的classes的路徑中查詢檔案 classpath:不僅包含class路徑,還包含jar中的

linux資料型別的表示思考

uint64_t 型別 可以支援64位的無符號數,使用這個關鍵字,需要引用標頭檔案#include<inttypes.h> 在使用多執行緒的過程中,pthread_create(&tid,NULL,func,arg); 如果只是想傳一個數進去,那麼可以直接

java根據hibernate配置檔案自動建表

1、對與java專案,做資料庫遷移時,都會用的資料指令碼。 2、當引入hibernate時,可以建立資料庫表的配置檔案。可以根據表的配置檔案自動在資料庫建表。(資料庫要預先建立好,因為hibernate只會建表,不會建庫) 步驟: 1)、在配置檔案 hibernate.cf

struts2配置檔案result的type型別

    struts的核心配置檔案是struts找頁面用的,用返回的字串,通過配置檔案的配置,去查詢返回相應的頁面。在struts配置檔案中,result的型別有不同種類,預設的跳轉方式是dispat

mybatis的xml配置檔案使用select語句資料不全

我的資料表裡項很多,但是用mybaits中的xml配置檔案select語句卻只返回了幾句話,之前我的程式碼是這樣的: <select id="selectAll" resultType="entity.Transaction"> selec