Java 在Derby数据库中,如何;用户名";及;表所有者“;相关的,那么设置它们的简单方法是什么?
我正在使用Derby学习Hibernate;我曾经把它作为一个嵌入式数据库,但是我的ant工作在填充数据时遇到了问题,所以我现在改用网络版本 除了Java/Hibernate程序外,我还使用Squirrel客户端访问数据库。我只想要一个尽可能简单的设置;我甚至不需要普通的安全、加密等 我一直在使用Squirrel创建数据库,使用sql脚本创建表。然后我在eclipse中运行一个ant作业,将数据放入表中。当我只有一个嵌入式数据库时,ant脚本会加载一条记录,然后说数据库“已经打开”;我切换到网络服务器模式,以允许ant脚本执行多个记录 squirrel客户端拒绝连接,除非有非0长度的用户名和密码,所以我输入admin/admin 当我这样做时,数据库表似乎是以用户名的形式组织起来的。squirrel中的“Objects”窗口显示数据库名称、ADMIN和该名称下的其他内容、表和ADMIN下的其他内容,然后是我在ADMIN下创建的表。ADMIN不出现在Sql脚本中,只出现在我用来创建和登录数据库的用户名中,所以我假设表在ADMIN下,因为那是我的用户名;我不知道它还会从哪里来 无论我在hibernate配置中是否在URL上放置“username=admin;password=admin”,它都会显示我试图添加到的(第一个)表不存在 那么,有人能告诉我,要让Squirrel和Java/Hibernate在Derby数据库中访问彼此相同的表,我必须做些什么吗?我认为,对上面的术语——用户名、模式、限定名称和simpleName(Squirrel和/或Derby使用的名称)有一个初步的了解,就可以做到这一点 以下是一个表格创作:Java 在Derby数据库中,如何;用户名";及;表所有者“;相关的,那么设置它们的简单方法是什么?,java,hibernate,derby,squirrel-sql,Java,Hibernate,Derby,Squirrel Sql,我正在使用Derby学习Hibernate;我曾经把它作为一个嵌入式数据库,但是我的ant工作在填充数据时遇到了问题,所以我现在改用网络版本 除了Java/Hibernate程序外,我还使用Squirrel客户端访问数据库。我只想要一个尽可能简单的设置;我甚至不需要普通的安全、加密等 我一直在使用Squirrel创建数据库,使用sql脚本创建表。然后我在eclipse中运行一个ant作业,将数据放入表中。当我只有一个嵌入式数据库时,ant脚本会加载一条记录,然后说数据库“已经打开”;我切换到网络
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>
jdbc:derby://localhost:1527/C:/Users/rcook/workspaceGalileoLaptop/BHChap3/BegHibernateDB;用户名=管理员;密码=管理员
org.apache.derby.jdbc.ClientDriver40
org.hibernate.dialogue.derbydialogue
0
假的
让我重复一遍;这对嵌入式数据库中的一条记录有效,因此我相信用于连接、创建映射对象、提交等的代码都有效;但我确信这两种访问方法的登录有问题。每个数据库中确实有一个中间级别的表组织,称为“模式”;您可以在此处阅读有关Derby架构实现的更多信息: 请注意,架构名称默认为用户名,但您始终可以在查询中显式指定架构名称:
select * from admin.aduser;
访问的表与访问的表不同
select * from rcook.aduser;
我从未在网络模式下使用过derby,只是嵌入的,但我认为如果在创建表时不指定模式名,它会将它放在您使用的用户名模式下。是的,你需要一个用户名/密码来连接任何数据库。我想你可能不需要这个答案。这个答案曾经有另外两个链接,它们是最有用的。谢谢()和()