在我的Spring boot应用程序中,我指定了对sqlite jdbc驱动程序的依赖:
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.34.0</version>
</dependency>
在波姆。xml属性
<hibernate.version>5.1.0.Final</hibernate.version>
并在我的申请表中填写以下内容。属性:
spring.jpa.database-platform=com.springboot.sqlite.SQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.defer-datasource-initialization = true
spring.datasource.url = jdbc:sqlite:cryptobot.db
spring.datasource.driver-class-name = org.sqlite.JDBC
我提供的SQLDialogue类是从本文复制而来的。但是运行应用程序失败了
组织。springframework。豆。工厂UnsatifiedDependencyException:创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/hibernatejbaconfiguration.class]:通过方法“entityManagerFactory”参数0表示的未满足依赖关系;嵌套的异常是org。springframework。豆。工厂未满足的依赖异常:创建名为“entityManagerFactoryBuilder”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/hibernatejbaconfiguration.class]:通过方法“entityManagerFactoryBuilder”参数0表示未满足的依赖关系;嵌套的异常是org。springframework。豆。工厂BeanCreationException:创建名为“jpaVendorAdapter”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/hibernatejbaconfiguration.class]中定义:通过工厂方法实例化bean失败;嵌套的异常是org。springframework。豆。BeanInstationException:未能实例化[org.springframework.orm.jpa.JpaVendorAdapter]:工厂方法“JpaVendorAdapter”引发异常;嵌套的例外是java。lang.NoClassDefFoundError:org/hibernate/jpa/HibernatePersistenceProvider位于org。springframework。豆。工厂支持构造器解决方案。在org上创建ArgumentArray(ConstructorResolver.java:800)~[spring-beans-5.3.13.jar:5.3.13]。springframework。豆。工厂支持构造器解决方案。在org上实例化eusingFactoryMethod(ConstructorResolver.java:541)~[spring-beans-5.3.13.jar:5.3.13]。springframework。豆。工厂支持AbstractAutoWireAbleBeanFactory。InstanceUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)~[spring-beans-5.3.13.jar:5.3.13]位于org。springframework。豆。工厂支持AbstractAutoWireAbleBeanFactory。createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)~[spring-beans-5.3.13.jar:5.3.13]位于org。springframework。豆。工厂支持AbstractAutoWireAbleBeanFactory。doCreateBean(AbstractAutowireCapableBeanFactory.java:582)~[spring-beans-5.3.13.jar:5.3.13]位于org。springframework。豆。工厂支持AbstractAutoWireAbleBeanFactory。createBean(AbstractAutowireCapableBeanFactory.java:542)~[spring-beans-5.3.13.jar:5.3.13]位于org。springframework。豆。工厂支持抽象工厂。lambda$doGetBean$0(AbstractBeanFactory.java:335)~[spring-beans-5.3.13.jar:5.3.13]位于org。springframework。豆。工厂支持DefaultSingletonBeanRegistry。getSingleton(DefaultSingletonBeanRegistry.java:234)~[spring-beans-5.3.13.jar:5.3.13]位于org。springframework。豆。工厂支持抽象工厂。doGetBean(AbstractBeanFactory.java:333)~[spring-beans-5.3.13.jar:5.3.13]位于org。springframework。豆。工厂支持抽象工厂。getBean(AbstractBeanFactory.java:208)~[spring-beans-5.3.13.jar:5.3.13]位于org。springframework。上下文支持AbstractApplicationContext。getBean(AbstractApplicationContext.java:1154)~[spring-context-5.3.13.jar:5.3.13]位于org。springframework。上下文支持AbstractApplicationContext。在org上完成BeanFactoryInitialization(AbstractApplicationContext.java:908)~[spring-context-5.3.13.jar:5.3.13]。springframework。上下文支持AbstractApplicationContext。在org上刷新(AbstractApplicationContext.java:583)~[spring-context-5.3.13.jar:5.3.13]。springframework。靴子Spring应用程序。在org上刷新(SpringApplication.java:730)~[spring-boot-2.6.1.jar:2.6.1]。springframework。靴子Spring应用程序。refreshContext(SpringApplication.java:412)~[spring-boot-2.6.1.jar:2.6.1]位于org。springframework。靴子Spring应用程序。在org上运行(SpringApplication.java:302)~[spring-boot-2.6.1.jar:2.6.1]。springframework。靴子Spring应用程序。在org上运行(SpringApplication.java:1301)~[spring-boot-2.6.1.jar:2.6.1]。springframework。靴子Spring应用程序。在com上运行(SpringApplication.java:1290)~[spring-boot-2.6.1.jar:2.6.1]。比南斯。机器人程序。BinanceBot应用程序。main(BinancebotApplication.java:10)~[classes/:na]
这里出了什么问题?
我试着在我的本地机器上复制这个,这里是解决方案。
你必须通过扩展组织来创建自己的dilect。冬眠地方话
package com.mehul.SQLiteDemo.dialect;
import java.sql.Types;
import org.hibernate.dialect.Dialect;
import org.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.dialect.function.VarArgsSQLFunction;
import org.hibernate.type.StringType;
public class SQLDialect extends Dialect {
public SQLDialect() {
registerColumnType(Types.BIT, "integer");
registerColumnType(Types.TINYINT, "tinyint");
registerColumnType(Types.SMALLINT, "smallint");
registerColumnType(Types.INTEGER, "integer");
registerColumnType(Types.BIGINT, "bigint");
registerColumnType(Types.FLOAT, "float");
registerColumnType(Types.REAL, "real");
registerColumnType(Types.DOUBLE, "double");
registerColumnType(Types.NUMERIC, "numeric");
registerColumnType(Types.DECIMAL, "decimal");
registerColumnType(Types.CHAR, "char");
registerColumnType(Types.VARCHAR, "varchar");
registerColumnType(Types.LONGVARCHAR, "longvarchar");
registerColumnType(Types.DATE, "date");
registerColumnType(Types.TIME, "time");
registerColumnType(Types.TIMESTAMP, "timestamp");
registerColumnType(Types.BINARY, "blob");
registerColumnType(Types.VARBINARY, "blob");
registerColumnType(Types.LONGVARBINARY, "blob");
// registerColumnType(Types.NULL, "null");
registerColumnType(Types.BLOB, "blob");
registerColumnType(Types.CLOB, "clob");
registerColumnType(Types.BOOLEAN, "integer");
registerFunction("concat", new VarArgsSQLFunction(StringType.INSTANCE, "", "||", ""));
registerFunction("mod", new SQLFunctionTemplate(StringType.INSTANCE, "?1 % ?2"));
registerFunction("substr", new StandardSQLFunction("substr", StringType.INSTANCE));
registerFunction("substring", new StandardSQLFunction("substr", StringType.INSTANCE));
}
public boolean supportsIdentityColumns() {
return true;
}
public boolean hasDataTypeInIdentityColumn() {
return false; // As specify in NHibernate dialect
}
public String getIdentityColumnString() {
// return "integer primary key autoincrement";
return "integer";
}
public String getIdentitySelectString() {
return "select last_insert_rowid()";
}
public boolean supportsLimit() {
return true;
}
protected String getLimitString(String query, boolean hasOffset) {
return new StringBuffer(query.length() + 20).append(query).append(hasOffset ? " limit ? offset ?" : " limit ?")
.toString();
}
public boolean supportsTemporaryTables() {
return true;
}
public String getCreateTemporaryTableString() {
return "create temporary table if not exists";
}
public boolean dropTemporaryTableAfterUse() {
return false;
}
public boolean supportsCurrentTimestampSelection() {
return true;
}
public boolean isCurrentTimestampSelectStringCallable() {
return false;
}
public String getCurrentTimestampSelectString() {
return "select current_timestamp";
}
public boolean supportsUnionAll() {
return true;
}
public boolean hasAlterTable() {
return false; // As specify in NHibernate dialect
}
public boolean dropConstraints() {
return false;
}
public String getAddColumnString() {
return "add column";
}
public String getForUpdateString() {
return "";
}
public boolean supportsOuterJoinForUpdate() {
return false;
}
public String getDropForeignKeyString() {
throw new UnsupportedOperationException("No drop foreign key syntax supported by SQLiteDialect");
}
public String getAddForeignKeyConstraintString(String constraintName, String[] foreignKey, String referencedTable,
String[] primaryKey, boolean referencesPrimaryKey) {
throw new UnsupportedOperationException("No add foreign key syntax supported by SQLiteDialect");
}
public String getAddPrimaryKeyConstraintString(String constraintName) {
throw new UnsupportedOperationException("No add primary key syntax supported by SQLiteDialect");
}
public boolean supportsIfExistsBeforeTableName() {
return true;
}
public boolean supportsCascadeDelete() {
return false;
}
}
还可以用包和类名更新spring.jpa.database-Platform=com.mehul.SQLiteDemo.dialect.SQLDialect。
注意:我使用了
由于Hibernate不附带SQLite的方言,因此您可以遵循以下路径:
import java.sql.Types;
import org.hibernate.dialect.Dialect;
public class SQLiteDialect extends Dialect {
public SQLiteDialect() {
super();
registerColumnType(Types.BIT, "integer");
registerColumnType(Types.TINYINT, "tinyint");
registerColumnType(Types.SMALLINT, "smallint");
registerColumnType(Types.INTEGER, "integer");
registerColumnType(Types.BIGINT, "bigint");
registerColumnType(Types.FLOAT, "float");
registerColumnType(Types.REAL, "real");
registerColumnType(Types.DOUBLE, "double");
registerColumnType(Types.NUMERIC, "numeric");
registerColumnType(Types.DECIMAL, "decimal");
registerColumnType(Types.CHAR, "char");
registerColumnType(Types.VARCHAR, "varchar");
.
.
.
}
}
单击查看完整示例。
对于Hibernate 5,添加依赖项:
<dependency>
<groupId>com.github.gwenn</groupId>
<artifactId>sqlite-dialect</artifactId>
<version>0.1.2</version>
</dependency>
和配置:
hibernate.dialect=org.sqlite.hibernate.dialect.SQLiteDialect
这个主要问题是,通过pom中的以下html" target="_blank">配置,您被显式配置为使用Hibernate 5.1.0。xml
<hibernate.version>5.1.0.Final</hibernate.version>
它太旧了(6年前发布),spring boot 2.6.1已经很长时间不支持它了。
从技术上讲,Spring引导2.6基于Spring5.3,Spring5.3是针对Hibernate 5.3开发和测试的,并在运行时尽最大努力与Hibernate 5.2向后兼容。您可以在HibernateJpaVendorAdapter
和此问题的javadoc中找到此类信息。
它试图加载组织。冬眠jpa。HibernatePersistenceProvider
在某些时候,但是这个类只在Hibernate 5.2之后存在。由于您现在正在使用Hibernate 5.1,因此它抱怨无法加载它,并出现以下错误:
[org.springframework.orm.jpa.JpaVendorAdapter]:工厂方法“JpaVendorAdapter”引发异常;嵌套的例外是java。lang.NoClassDefFoundError:org/hibernate/jpa/HibernatePersistenceProvider
因此,只需删除上面的
问题内容: 输出 >无法连接到数据库服务器java.lang.ClassNotFoundException 问题答案: 看来您应该将MySQL驱动程序jar放入 类路径中 。
问题内容: 我刚刚用Apache,MySQL和PHP安装了Debian Lenny,并且收到了PDOException 。 这是它所指的特定代码行: ,,,和是我所定义的常量。它在生产服务器(以及我以前的Ubuntu Server设置)上运行良好。 这与我的PHP安装有关吗? 搜索互联网没有帮助,我得到的只是专家交流和示例,但没有解决方案。 问题答案: 您需要有一个名为pdo_mysql的模块。在
问题内容: 我在只能访问MySQL和FTP的服务器上开发网站,因此我运行的所有命令都是通过b374k php shell进行的。我在使用SQL驱动程序时遇到Laravel问题。我尝试切换到文件托管的SQLite(在database / database.sqlite中),但是引发的异常与使用MySQL时相同。控制台的输入和输出如下: 服务器上安装的Apache扩展为: 可能是什么问题,我该如何解决
因此,我一直在使用sbt with assembly将所有依赖项打包到一个jar中,用于spark工作。我做了几个工作,使用设置连接池信息,将其广播出去,然后在RDD上使用获取连接,并将数据插入数据库。在我的sbt构建脚本中,我包括 这确保JDBC连接器与作业打包在一起。一切都很好。 因此,最近我开始使用SparkSQL,并意识到使用中的新特性,简单地获取一个dataframe并将其保存到jdbc
我正在一个服务器上开发一个网站,我只能访问MySQL和FTP,所以我运行的所有命令都是通过b374k php shell。我遇到了SQL驱动程序的Laravel问题。我尝试切换到文件托管的SQLite(在database/database.SQLite中),但引发的异常与使用MySQL时相同。控制台的输入输出如下: 服务器上安装的Apache扩展包括: 问题可能是什么?我如何修复它?(我没有访问根
我正在开发一个java web应用程序,它使用Jasper report来显示一些报表。现在我的版本发生了一些变化,我得到了以下错误: 我认为错误可能是由于构建路径造成的。这是我的依赖树: 你能给我一些关于这个错误的建议吗?