暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hibernate适配SUNDB如何实现不同用户间相互访问

原创 科蓝SUNDB编辑部 2022-12-08
538

1. 操作系统版本及内核发行版本:

CentOS 7.6–3.10.0-693.el7.x86_64

2. 数据库版本及架构:

数据库架构 单机, 数据库版本为 Release 5.0 22.1.0 revision(28cd72e)

3. 问题描述:

Hibernate适配SUNDB如何实现A,B两个用户查询同一张表的时候select语句中不指定schema_name

4. 问题说明:

Mysql 实现方式:
表属于database而用户时独立于database之外的。
假设表table_test 属于test 数据库,两套应用的业务用户A和 B 执行相同的sql: select * from table_test;
则两套应用只需要用自己的用户连接Mysql 时在 url中指定需要连接database为test 即可。

Mysql 示意图
image.png

5. 解决方案:

SUNDB 实现方式:
表属于schema,而schema属于某一个用户。
假设表table_test 属于 schemaB 而 schemaB 属于user B ,两套应用的业务用户A和B 执行相同的sql: select * from table_test ;
B 用户能正常查询到数据而 A 用户会报表和视图不存在,因为 A 用户默认会在自己的schemaA 下寻找表,执行sql相当于 select * from
schemaA.table_test; 但schemaA下并没有table_test 表所以报错。
需要使用hibernate 的 default_schema 设置默认的 schema 为schemaB。
那么应用执行的查询语句就相当于 select * from schemaB.table_test; 无论使用什么用户查询只要确保有足够的权限都能够进行查询。
Hibernate 的配置文件中添加如下配置:
schemaB

SUNDB 示意图
image.png

最后修改时间:2023-07-17 14:54:08
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论