请告诉我以下错误的原因。
我在我的项目中使用Hibernate,在服务器启动过程中遇到以下错误
15:04:27.909 [localhost-startStop-1] ERROR o.h.tool.hbm2ddl.SchemaValidator - HHH000319: Could not get database metadata
org.h2.jdbc.JdbcSQLException: Table "ALL_SEQUENCES" not found; SQL statement:
select sequence_name from all_sequences union select synonym_name from all_synonyms us, all_sequences asq where asq.sequence_name = us.table_name and asq.sequence_owner = us.table_owner [42102-168]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2-1.3.168.jar:1.3.168]
at org.h2.message.DbException.get(DbException.java:169) ~[h2-1.3.168.jar:1.3.168]
at org.h2.message.DbException.get(DbException.java:146) ~[h2-1.3.168.jar:1.3.168]
at org.h2.command.Parser.readTableOrView(Parser.java:4770) ~[h2-1.3.168.jar:1.3.168]
at org.h2.command.Parser.readTableFilter(Parser.java:1084) ~[h2-1.3.168.jar:1.3.168]
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1690) ~[h2-1.3.168.jar:1.3.168]
4条答案
按热度按时间efzxgjgh1#
如果您在
persistence.xml
中使用了错误的persistence-unit
方言,或者针对错误的数据库进行了验证,就会发生这种情况。例如,当您针对本地H2数据库运行应用程序时,最好的选择是删除方言,因为Hibernate可以识别没有此属性的数据库(如果Hibernate的版本足够新,可以识别较新的数据库)。另一种解决方案是删除validate属性,但我不建议这样做,因为在启动时没有数据库检查:6tr1vspr2#
我使用了多个数据源
OracleDb1Configuration
hibernate-oracle-db1-test.properties
hibernate.hbm2ddl.auto =更新
application-test.yml
oracle: db1: datasource: url: jdbc:h2:mem:test driver-class-name: org.h2.Driver username: root password: db2: datasource: url: jdbc:h2:mem:test driver-class-name: org.h2.Driver username: root password:
ui7jx7zq3#
您必须确保创建了表和序列。如果它被创造出来,它就会工作。
表
"ALL_SEQUENCES"
未创建。请检查您的数据库是否存在?您的问题是序列没有创建,表也没有创建。
Solution:
检查您的hibernate.cfg.xml。它没有配置好。为了澄清,我在下面给出了一个cfg file:
eivgtgni4#
在我的例子中,我在应用程序中使用了多个线程,并使用H2进行测试。在这种情况下,您必须手动在Java的JPA属性中设置方言,而不是通过application.properties文件。
在每一个使用过的笔记本电脑中。
万一它能帮上什么人。
问候