为了账号安全,请及时绑定邮箱和手机立即绑定

无法在基于 Spring Hibernate 注释的配置中获取 JDBC 连接

无法在基于 Spring Hibernate 注释的配置中获取 JDBC 连接

心有法竹 2022-06-04 16:09:26
我有基于spring java的配置。休眠配置package com.app.surveyapp.configuration;import java.util.Properties;import javax.sql.DataSource;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.core.env.Environment;import org.springframework.jdbc.datasource.DriverManagerDataSource;import org.springframework.orm.hibernate5.LocalSessionFactoryBean;@Configuration@ComponentScan({ "com.app.surveyapp.configuration" })@PropertySource(value = { "classpath:application.properties" })public class HibernateConfiguration {    private static final Logger logger = Logger.getLogger(HibernateConfiguration.class);    @Autowired    private Environment environment;    @Bean    public LocalSessionFactoryBean sessionFactory() {        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();        sessionFactory.setDataSource(dataSource());        sessionFactory.setPackagesToScan(new String[] { "com.app.surveyapp.models" });        sessionFactory.setHibernateProperties(hibernateProperties());        return sessionFactory;     }    @Bean    public DataSource dataSource() {        DriverManagerDataSource dataSource = new DriverManagerDataSource();        dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));        dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));        dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));        dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));        return dataSource;        }}我正在尝试执行 DAO 文件中存在的 create()。但在执行时我收到错误Transaction tx = session.beginTransaction();。
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

发布此问题是为了完整和澄清问题,以防其他人遇到此问题(基本上是对上述评论的回顾)。

使用的数据库是 MySQL 8.0,问题是由过时的mysql-connector-java. 正如这个答案中所建议的,解决方案是更新连接器。


查看完整回答
反对 回复 2022-06-04
?
慕村225694

TA贡献1880条经验 获得超4个赞

似乎您的数据库的字符集和您的 java 应用程序在某种程度上不兼容。这似乎是 MySQL 的一个已知问题,您可能会在此处看到:java.sql.SQLException: Unknown initial character set index '255' received from server for connector 8.0.11

但是其他 DBMS 也可能存在类似的问题。

此外,您可以更改字符编码“java-side”,如您在堆栈跟踪中看到的:

Caused by: java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.



查看完整回答
反对 回复 2022-06-04
  • 2 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号