Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 设置Vertica数据库的默认架构_Jpa_Playframework_Vertica - Fatal编程技术网

Jpa 设置Vertica数据库的默认架构

Jpa 设置Vertica数据库的默认架构,jpa,playframework,vertica,Jpa,Playframework,Vertica,我正在使用Play构建一个web应用程序!以Vertica数据库作为后端。Vertica的JDBC连接字符串包含服务器和数据库名称,但我的表在特定的模式下(比如“dev_myschema”)。因此,我应该将我的表称为“dev_myschema.mytable”。在生产模式中(比如“prod_myschema”)也有所有这些表的真实数据的精确副本 我想在配置文件中设置这个模式名,以便在这两个模式之间轻松切换。现在,我在助手类中有一个getConnection方法,它执行DB.getConnecti

我正在使用Play构建一个web应用程序!以Vertica数据库作为后端。Vertica的JDBC连接字符串包含服务器和数据库名称,但我的表在特定的模式下(比如“dev_myschema”)。因此,我应该将我的表称为“dev_myschema.mytable”。在生产模式中(比如“prod_myschema”)也有所有这些表的真实数据的精确副本

我想在配置文件中设置这个模式名,以便在这两个模式之间轻松切换。现在,我在助手类中有一个getConnection方法,它执行DB.getConnection(),并将配置的模式设置为该连接对象的默认模式。但是,在其他模型类中,它与实体注释(@Entity@Table(name=dev_myschema.mytable))一起被提及时,这一点并没有帮助

是否有一种方法可以在配置文件中指定模式名称,并让连接方法和模型注释读取该名称


谢谢。

据我所知(我刚刚浏览了4.1.7文档),目前还无法将架构设置为默认架构。

根据sql指南,默认架构是在搜索树中找到的第一个架构。也许你可以利用这个漏洞,确保首先找到你的副本。

如果我使用我的开发模式,我处理这个问题的方法是执行“设置搜索路径”命令。因此,创建Vertica连接对象后,立即执行以下命令:

    "set search path to dev_myschema"

在我的应用程序代码中,我只是让Vertica对象检查一个环境/配置变量,如果存在“dev schema”设置,它会在建立连接时执行该语句。我的生产配置没有该设置,因此在这种情况下,它将只使用默认模式,而不会产生每次执行该语句的额外开销。

Eugene几乎正确,但缺少下划线。设置默认架构的正确Vertica SQL语法为:

set search_path to dev_myschema
正如Eugene所建议的,如果您使用的是低级JDBC,那么在创建连接对象后,您就可以执行以下操作:

conn.createStatement().executeUpdate("set search_path to " + schemaName);

在7.0中,管理员可以通过发出以下命令将其设置为用户级别:

alter user user_name search_path schema1,schema2;

我想让jpa和vertica合作。您会发布您的持久性和数据源配置吗?我不能让它工作。“Laule-我用它来播放框架,并配置它认为Vista数据库像PASGRESS方言。FWIW,这里是配置参数
jpa.dialogue=org.hibernate.dialogue.PostgreSqlDialogue
在两周前使用了一种基于postgres的自定义方言。hbm2ddl不适用于我的(旧)模型,因为它使用了vertica不支持的数据类型(默认为smallint到int4,vertica不知道int4…)。还是谢谢你的回答。