Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Database &引用;“未找到关系”;在Eclipse Hibernate应用程序中使用Postgres_Database_Hibernate_Postgresql - Fatal编程技术网

Database &引用;“未找到关系”;在Eclipse Hibernate应用程序中使用Postgres

Database &引用;“未找到关系”;在Eclipse Hibernate应用程序中使用Postgres,database,hibernate,postgresql,Database,Hibernate,Postgresql,基于我之前未解决的问题,我想问一下,关于从hibernate应用程序到PostgreSql数据库的连接,我是否做得不对。我倾向于认为问题在于与数据库的连接,而我在过去两天内无法解决它。实体如我的链接问题中所示(由于空间需求,我不会再次编写该问题)。我的cfg.xml文件是: 知道问题的原因吗?和数据库的连接有什么问题? 它可能是丢失的罐子,或者换句话说,没有使用合适的罐子 注意:有些人认为问题在于表名的大写/小写。我尝试过在实体中将所有映射的名称从大写改为小写,反之亦然,但没有改变任何东西

基于我之前未解决的问题,我想问一下,关于从hibernate应用程序到PostgreSql数据库的连接,我是否做得不对。我倾向于认为问题在于与数据库的连接,而我在过去两天内无法解决它。实体如我的链接问题中所示(由于空间需求,我不会再次编写该问题)。我的cfg.xml文件是:

知道问题的原因吗?和数据库的连接有什么问题? 它可能是丢失的罐子,或者换句话说,没有使用合适的罐子


注意:有些人认为问题在于表名的大写/小写。我尝试过在实体中将所有映射的名称从大写改为小写,反之亦然,但没有改变任何东西

根据我在你的另一个问题中的建议:

启动psql您的_数据库并发出\d以查看表

我不熟悉Hibernate,但是@Table(name=“DEPARTMENT”)之类的语句很可能正在创建实际称为“DEPARTMENT”的表,而您的查询实际上是从DEPARTMENT(不带双引号)进行查询,postgresql将其解释为DEPARTMENT


如果是这样,修复方法是在创建表名时使用小写,或者在查询表时让Hibernate使用双引号和大写。

根据我在其他问题中的建议:

启动psql您的_数据库并发出\d以查看表

我不熟悉Hibernate,但是@Table(name=“DEPARTMENT”)之类的语句很可能正在创建实际称为“DEPARTMENT”的表,而您的查询实际上是从DEPARTMENT(不带双引号)进行查询,postgresql将其解释为DEPARTMENT


如果是这样,修复方法是在创建表名时使用小写,或者在查询表时让Hibernate使用双引号和大写。

我也有类似的问题,其中我的表名是Message_History,而我得到的错误消息是“由:org.postgresql.util.psqleexception:error:relation”Message_History“不存在“,我不知道为什么它的lookig message_history在我的hibernate配置中将表名显示为message_history。因为这是我的示例代码,所以我将DB中的表名更改为message_history,然后继续,但是如果在列名中也使用lower/upper,我也会遇到类似的问题。所以我把列名改成小写,然后它对我来说非常好

我也有类似的问题,我的表名是Message_History,而我得到的错误消息是“由:org.postgresql.util.psqleexception:error:relation“Message_History”不存在引起的”,我不确定为什么它的lookig Message_History(我的hibernate配置将表名作为Message_History)显示。因为这是我的示例代码,所以我将DB中的表名更改为message_history,然后继续,但是如果在列名中也使用lower/upper,我也会遇到类似的问题。所以我把列名改成小写,然后它对我来说非常好

您的连接正常,但表
部门
不可用。您需要首先使用
create table
statement@a_horse_with_no_name:那是Hibernate的工作。为此,我们在cfg.xml文件中添加了create属性,正如我在问题中所引用的,显然Hibernate并没有创建表。我已经在另一个问题中问过这个问题:表在psql中可见吗?不,不可见(在pdAdmin中我可以看到它)。因此,我倾向于认为应用程序没有对数据库的“访问权”?那没有道理。这显然不是一个“连接”问题。你会得到一个完全不同的错误信息。我猜您正在连接到pgAdmin和应用程序中的另一个数据库/服务器。您的连接确实有效,但表
department
不可用。您需要首先使用
create table
statement@a_horse_with_no_name:那是Hibernate的工作。为此,我们在cfg.xml文件中添加了create属性,正如我在问题中所引用的,显然Hibernate并没有创建表。我已经在另一个问题中问过这个问题:表在psql中可见吗?不,不可见(在pdAdmin中我可以看到它)。因此,我倾向于认为应用程序没有对数据库的“访问权”?那没有道理。这显然不是一个“连接”问题。你会得到一个完全不同的错误信息。我猜您正在连接到pgAdmin和应用程序中的另一个数据库/服务器。该表不存在,因为Hibernate没有创建它,正如它应该做的那样。关于小写/大写,这不是原因。即使我删除了@Table(name=“…”)和@Column(name=“…”)的注释,也会得到相同的错误:“关系部门不存在”。由于未知原因,hibernate不会创建表。有Hibernate经验的人可能会解释,我很惊讶在Hibernate中使用的站点的人没有响应……请仔细检查(直接在DB中,使用psql)表是否没有使用大写名称创建。因为如果是,您将得到一条消息,即该表不存在,而实际上它只是存在,但名称不同。另外,检查存在哪些模式,以防您的搜索路径设置了一些奇怪的值。即使使用pgAdmin中的查询Select*from DEPARTMENT,我也会得到相同的错误:“关系”DEPARTMENT“不存在”。出于未知原因,它没有创建表。在模式中,我有一个模式(1)-public,它没有检查…:-)<代码>选择*fro
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.connection.url">jdbc:postgresql:template1</property>
    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    <property name="hibernate.connection.username">postgres</property>
    <property name="hibernate.connection.password">user</property>


    <property name="connection.pool_size">1</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.hbm2dll.auto">create</property>
    <property name="current_session_context_class">thread</property>
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

    <mapping class="com.al.hibernatetest.Department"/>
    <mapping class="com.al.hibernatetest.Employee"/>
</session-factory>
Apr 27, 2013 11:54:58 AM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
Apr 27, 2013 11:54:58 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.0.Beta1}
Apr 27, 2013 11:54:58 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Apr 27, 2013 11:54:58 AM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Apr 27, 2013 11:54:58 AM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
Apr 27, 2013 11:54:58 AM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
Apr 27, 2013 11:54:58 AM org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
Apr 27, 2013 11:54:59 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
Apr 27, 2013 11:54:59 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 1
Apr 27, 2013 11:54:59 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: false
Apr 27, 2013 11:54:59 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [org.postgresql.Driver] at URL [jdbc:postgresql:template1]
Apr 27, 2013 11:54:59 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=postgres, password=****}
Apr 27, 2013 11:54:59 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
Apr 27, 2013 11:54:59 AM org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation
INFO: HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
Apr 27, 2013 11:54:59 AM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
Apr 27, 2013 11:54:59 AM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
Hibernate: insert into DEPARTMENT (DEPT_NAME) values (?)
Apr 27, 2013 11:54:59 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 42P01
Apr 27, 2013 11:54:59 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ERROR: relation "department" does not exist
  Position: 13
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute statement
    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:122)
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:136)
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96)
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2967)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3478)
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203)
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:183)
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:167)
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:321)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:286)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:192)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:205)
    at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:190)
    at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:91)
    at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:764)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:756)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:752)
    at com.al.hibernatetest.Main.main(Main.java:24)
Caused by: org.postgresql.util.PSQLException: ERROR: relation "department" does not exist
  Position: 13
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:133)
    ... 22 more
2013-04-27 11:36:51 CEST ERROR:  relation "department" does not exist at character 13
2013-04-27 11:36:51 CEST STATEMENT:  insert into DEPARTMENT (DEPT_NAME) values ($1) RETURNING *
2013-04-27 11:36:51 CEST LOG:  could not receive data from client: No connection could be made because the target machine actively refused it.