mysql test 映射到实体_将MySql视图映射到JPA Entitites,使用哪个唯一...
我不認為有一種標準方式,但這種方法似乎值得嘗試.
想法是為視圖動態生成唯一的“id”值(類似于rownum).來自Create a view with column num_rows – MySQL的功能的一點修改版本(為了重置rownum而進行的修改):
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
//
假設我們有一個視圖定義(為簡化說明而過于簡化)
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將為您提供連續的rownums,例如第一次以1開頭,第二次以視圖中的記錄數等開始.
要重置rownum,我創建另一個視圖(因為mysql視圖限制 – 它不能在FROM中有子查詢):
CREATE VIEW v_reset AS SELECT func_inc_var_session(1);
現在我們可以做到
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)將在查詢期間執行一次,因此它將重置rownum).
我希望它有所幫助.
總結
以上是生活随笔為你收集整理的mysql test 映射到实体_将MySql视图映射到JPA Entitites,使用哪个唯一...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pyqt5 tableview 设置行颜
- 下一篇: 语法手册_是真的猛!SQL 语法速成手册