Hibernate查詢時,資料庫返回多條紀錄,封裝後的物件卻都是一樣的問題
1. 背景
- 表的設計如下
2.實體類部分如下:
public class WdsStRsvrREntity {
@Id
private String stcdt;
private Date ymdhm;
- 使用jpa的
findByStcdtAndYmdhmBetween(String id,Date startTime,Date endTime)
的函式查詢時,會發現查出的所有資料都是一樣的。
2. 問題原因
其實很簡單,因為hibernate配置檔案上,我這個實體的主鍵是ID欄位,而我的資料庫中,,ID並不能作為唯一標識,所以,當hibernate查資料庫的第一條紀錄的時候,就生成了一個WdsStRsvrREntity物件,放在持久物件池裡。
當再去查第二條紀錄的時候,hibernate發現第二條紀錄的ID和持久池裡那第一條紀錄的ID是一樣的,所以就不重複生成新的物件了,直接拿持久池裡原有的那個物件放到list中去,第三條紀錄也一樣.
這樣,就導致list中的3個物件都是一樣的結果。
3. 解決辦法
在Hibernate上給物件配置聯合主鍵來避免。方法如下:
Spring Data Jpa 複合主鍵
相關推薦
Hibernate查詢時,資料庫返回多條紀錄,封裝後的物件卻都是一樣的問題
1. 背景 表的設計如下 2.實體類部分如下: public class WdsStRsvrREntity { @Id private String stcdt; private Date ymdhm; 使用jpa的 findByStcd
mybatis返回boolean值時資料庫返回null
Servlet.service() for servlet [springDispatcherServlet] in context with path [/ms] threw exception [Request processing failed; nested exception is org.apac
hibernate 查詢資料全是第一條
今天做一個查詢,查詢的sql 放在資料裡執行,是四條不一樣的資料,可是用hibernate 一查卻全是一樣的. list中的四個物件,都是一樣的. 這是什麼原因呢? 其實很簡單,因為hibernate配置檔案上,我這個實體的主鍵是ID欄位,而我的檢視,ID並不能作為唯一標識,所
C#(.net)中的一次連線資料庫執行多條sql語句(兩種方法)
第一種方法: string str="server=.;uid=sa;pwd=111111;database=text_db";//連線字串 SqlConnection SCON = null;//連線物件 SqlCommand SCom=new SqlCommand();/
python匿名函式,有引數時,無引數時,返回多個引數時
lambda lambda 形參:返回式子 演練 應用場景 它和其它函式一起使用,一般不會獨立使用 特點 匿名函式不應該有複雜的邏輯,比如不應有if判斷,但可以有判斷的函式如startswith等。(或者使用三元表示式)。 匿函的核心是,冒號的右邊應該是
Mysql之一對多查詢,如何將多條記錄合併成一條記錄
資料庫環境:mysql5.6 需求描述(圖1): 最終期望的結果(圖2): 如上圖所示,現有兩張表cj_lottery_winning_record和cj_lottery_winning_user_info 兩者的關係是一對多。 現在進行連線查
將dataGridView中的新增/刪除等修改儲存至資料庫 ,支援多條操作,最後一次性儲存
1、窗體級變數,準備工作 MMS.Public.DbAccLibry.DbAccess myDbacc; //// <summary> /// 批量修改資料庫交易物件 /// </summary
MySQL資料庫將多條記錄的單個欄位…
MySQL資料庫將多條記錄的單個欄位合併成一條記錄的操作是本文我們主要要介紹的內容,接下來就讓我們一起來了解一下這部分內容吧。 測試用表結構: CREATE TABLE IF NOT EXISTS `tet` ( `id` int(11) NOT NULL, `name
listView返回多條資料但手機上顯示就只有一條?
這個問題困了我整整2天啊,今天終於解決了,分香個大家看看: for (Map<String, String> item : OldPatroljson) { System.out.println("OldPatroljson" + OldPatro
用複數value一次給資料庫插入多條記錄
insert multi-records by sql,not UI,easy and multi-platform. 因為資料庫表中一般都有與資料庫實際語境無關的主鍵,並且設為自增,所以,我們插入值得時候一般不要人為地設定id的值,這就需要在表名後面加上要插入值的欄位名。
BeanListHandler:(常用)將多條記錄封裝到一個裝有JavaBean的List集合中;MapHandler: 將一條記錄封裝到一個Map集合中,Map的key是列名,Map的value就是
BeanListHandler:(常用)將多條記錄封裝到一個裝有JavaBean的List集合中 @Test//BeanListHandler:將多條記錄封裝到有JavaBean的List集合中 //
hibernate查詢資料庫char型別欄位時只返回一個字元
hibernate查詢資料表char型別欄位只返回一個字元 在oracle或sqlServer下會遇到,查詢資料表字段型別為char,如果使用Hibernate原生SQL去執行查詢,往往只會返回 一
mybatis 關聯查詢時,從表只返回第一條記錄解決辦法
bean mod 第一條 solid ews 解決辦法 prop ica 元素 如果兩表聯查,主表和明細表的主鍵都是id的話,明細表的多條只能查詢出來第一條。 造成以上情況可能的
resultset 查詢時返回多個相同值
代碼生成器 ast rim 解決 簡單的 自帶 logback maven 大寫 背景 做個簡單的接口開發,拿到的平臺比較不理想,好久沒重新搭建一個了,正好練練手。用了基礎的servlet,maven,logback(log4j不支持格式化,比較煩人),fastjson,d
【java專案】mybatis中的mapper查詢時返回其他實體(多用於多表查詢)
<select id="selectUserorder" resultType="com.pojo.Orderdetail" parameterType="java.lang.Integer"> SELECT a.o_status, a.o_no, a.uid,
mysql資料庫和查詢語句中欄位型別不匹配出現異常,查詢或更新多條的原因
說明 表結構和where查詢的欄位型別一致,均為字串或者是整數,不會型別轉化 表結構和where查詢的欄位型別不一致: 一個為TIMESTAMP或者是DATETIME,另一個為常量,常量會轉化為TIMESTAMP,再進行比較 一個為DECIMAL或者是整數,整數會轉化
JAVA使用HBase根據Rowkey批量查詢資料(一次查多條,返回多個記錄)
最近有需求說是根據多個RowKey返回結果集: public static Configuration conf = null; public static Connection connection = null; public static Admin admin = nul
Python oracle資料庫查詢結果以字典形式儲存,取多條結果記錄數的實現
方法: def executeSQL(self,sql,params): conn = self.connectDB() conn = self.cursor try: self.r = conn.execute(sql,params) s
【問題解決】Mybatis一對多/多對多查詢時只查出了一條資料
問題描述: 如果三表(包括了關係表)級聯查詢,主表和明細表的主鍵都是id的話,明細表的多條資料只能查詢出來第一條/最後一條資料。 三個表,許可權表(Permission),許可權組表(PermissionGroup),許可權組與許可權的關係表(P
如何查詢oracle資料庫一個表中的多條記錄是否有重複
原文連結:http://blog.chinaunix.net/uid-16175364-id-2752272.html如何查詢oracle資料庫一個表中的很多條記錄是否有重複?重複的判斷標準是指定為幾個欄位中只要有任意的一個欄位中有重複就將重複的記錄列出來。Select