将MySql视图映射到JPA Entitites,使用哪个唯一ID?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将MySql视图映射到JPA Entitites,使用哪个唯一ID?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1438字,纯文字阅读大概需要3分钟。
内容图文
![将MySql视图映射到JPA Entitites,使用哪个唯一ID?](/upload/InfoBanner/zyjiaocheng/904/7145afa9a668443d97e16ad4a1f9cd36.jpg)
所以我一直在使用视图而不是结果查询作为我项目中的实体,我知道我并不孤单,所以,我的问题:
在处理视图时,你用什么来扮演@Id?有时这个问题的答案是微不足道的,但有时当你没有一个独特的领域突出时,你们做了什么?
现在我在特定视图中包含了我需要的更多字段,因此我可以将各个字段组合在一起,并且我在每个字段上使用@Id注释,到目前为止它一直很好用.
这似乎是如此背景,我一直在问自己是否有更标准的方法.
解决方法:
我不认为有一种标准方式,但这种方法似乎值得尝试.
想法是为视图动态生成唯一的“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视图映射到JPA Entitites,使用哪个唯一ID?全部内容,希望文章能够帮你解决将MySql视图映射到JPA Entitites,使用哪个唯一ID?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。