mysql test 映射到实体_将MySql视图映射到JPA Entitites,使用哪个唯一...
我不認(rèn)為有一種標(biāo)準(zhǔn)方式,但這種方法似乎值得嘗試.
想法是為視圖動態(tài)生成唯一的“id”值(類似于rownum).來自Create a view with column num_rows – MySQL的功能的一點修改版本(為了重置rownum而進(jìn)行的修改):
delimiter //
CREATE FUNCTION `func_inc_var_session`( val int) RETURNS int
NO SQL
NOT DETERMINISTIC
begin
if val = 0 THEN set @var := -1; end if;
SET @var := IFNULL(@var,0) + 1;
return @var;
end
//
假設(shè)我們有一個視圖定義(為簡化說明而過于簡化)
CREATE VIEW v_test1
SELECT a.field1
FROM test_table a
將其修改為
CREATE VIEW v_test1
SELECT a.field1, func_inc_var_session(0) as rownum
FROM test_table a
會做的;但是,在一個會話中多次運行select * from v_test將為您提供連續(xù)的rownums,例如第一次以1開頭,第二次以視圖中的記錄數(shù)等開始.
要重置rownum,我創(chuàng)建另一個視圖(因為mysql視圖限制 – 它不能在FROM中有子查詢):
CREATE VIEW v_reset AS SELECT func_inc_var_session(1);
現(xiàn)在我們可以做到
CREATE VIEW v_test1
SELECT a.field1, func_inc_var_session(0) as rownum
FROM test_table a, v_reset
(首先處理FROM子句,func_inc_var_session(1)將在查詢期間執(zhí)行一次,因此它將重置rownum).
我希望它有所幫助.
總結(jié)
以上是生活随笔為你收集整理的mysql test 映射到实体_将MySql视图映射到JPA Entitites,使用哪个唯一...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pyqt5 tableview 设置行颜
- 下一篇: 语法手册_是真的猛!SQL 语法速成手册