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

我有基于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();。


心有法竹
浏览 153回答 2
2回答

阿晨1998

发布此问题是为了完整和澄清问题,以防其他人遇到此问题(基本上是对上述评论的回顾)。使用的数据库是 MySQL 8.0,问题是由过时的mysql-connector-java. 正如这个答案中所建议的,解决方案是更新连接器。

慕村225694

似乎您的数据库的字符集和您的 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.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java