gpt4 book ai didi

java - 在 Derby 数据库中, "username"和 "table owner"有何关联?设置它们的简单方法是什么?

转载 作者:行者123 更新时间:2023-12-01 14:50:25 24 4
gpt4 key购买 nike

我正在使用Derby来学习Hibernate;我曾经将它作为嵌入式数据库,但我用 ant 填充数据的作业遇到了问题,所以我切换到网络版本。

除了我的 Java/Hibernate 程序之外,我还使用 Squirrel 客户端访问数据库。我只想要一个尽可能简单的设置;我什至不需要普通的安全、加密等。

我一直在使用 Squirrel 来创建数据库,并使用 sql 脚本来创建表。然后我从 Eclipse 中运行一个 ant 作业,将数据放入表中。当我只有一个嵌入式数据库时,ant 脚本会加载一条记录,然后说该数据库“已打开”;我切换到网络服务器模式以允许 ant 脚本执行多条记录。

除非有非0长度的用户名和密码,否则松鼠客户端拒绝连接,所以我输入了admin/admin。

当我这样做时,似乎数据库表是以某种方式组织在用户名下的。 squirrel 中的“对象”窗口显示数据库名称、ADMIN 以及该窗口下的其他一些内容、TABLE 以及 ADMIN 下的其他一些内容,然后是我在 ADMIN 下创建的表。 ADMIN 不会出现在 Sql 脚本中,仅出现在我用来创建和登录数据库的用户名中,因此我假设这些表位于 ADMIN 下,因为这是我的用户名;我不知道它还会从哪里来。

无论我是否在 hibernate 配置中的 URL 上放置“username=admin;password=admin”,它都会表示我尝试添加的(第一个)表不存在。

那么有人可以告诉我我必须做什么才能让 Squirrel 和 Java/Hibernate 访问 Derby 数据库中的相同表吗?我认为对上述术语的基本理解——用户名、模式、qualifiedName 和 simpleName(Squirrel 和/或 Derby 使用它们)可能会成功。

这是创建的表格之一:

create table AdUser
( id bigint generated by default as identity (start with 1),
name varchar(255),
password varchar(255),
primary key (id),
unique(name)
);

这是 hibernate 配置文件:

<property name="hibernate.connection.url"> jdbc:derby://localhost:1527/C:/Users/rcook/workspaceGalileoLaptop/BHChap3/BegHibernateDB;username=admin;password=admin</property>
<property name="hibernate.connection.driver_class"> org.apache.derby.jdbc.ClientDriver40 </property>
<!-- <property name="hibernate.connection.username">sa</property> -->
<!-- <property name="hibernate.connection.password"></property> -->
<property name="hibernate.dialect"> org.hibernate.dialect.DerbyDialect </property>

<property name="hibernate.connection.pool_size">0</property>
<property name="hibernate.show_sql">false</property>

让我重复一遍;这适用于嵌入式数据库中的一条记录,因此我相信用于连接、创建映射对象、提交等的代码都可以工作;但我确信我在两种访问方法的登录中做错了什么。

最佳答案

每个数据库内部确实有一个中间级别的表组织,称为“模式”;您可以在此处阅读有关 Derby 架构实现的更多信息:http://db.apache.org/derby/docs/10.9/ref/rrefschemaname.html

请注意,架构名称默认为您的用户名,但您始终可以在查询中显式指定架构名称:

select * from admin.aduser;

访问与实际不同的表

select * from rcook.aduser;

关于java - 在 Derby 数据库中, "username"和 "table owner"有何关联?设置它们的简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14928740/

24 4 0