ไม่สามารถแก้ไขชื่อ [org.hibernate.dialect.MySQL5Dialect ] เป็นกลยุทธ์ [org.hibernate.dialect.Dialect]

ฉันใหม่ใน Spring Application กับ Gradle ขณะรันโปรเจ็กต์ของฉันเพื่อสร้างออบเจ็กต์ฐานข้อมูลตามคลาสที่ฉันสร้าง ฉันได้รับข้อผิดพลาดต่อไปนี้:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MySQL5Dialect ] as strategy [org.hibernate.dialect.Dialect]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1572)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:960)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:749)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:117)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:689)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:969)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:958)
at com.krypton.smartImmo.SmartImmoApplication.main(SmartImmoApplication.java:10)

Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MySQL5Dialect ] as strategy [org.hibernate.dialect.Dialect]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:128)
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:155)
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:136)
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:78)
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:68)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:165)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)

ใน application.properties ฉันมีการตั้งค่าต่อไปนี้เกี่ยวกับการไฮเบอร์เนต

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 

person Djama    schedule 04.11.2015    source แหล่งที่มา
comment
คุณใช้โหมดไฮเบอร์เนตเวอร์ชันใดอยู่   -  person Gergely Bacso    schedule 04.11.2015
comment
@GergelyBacso เวอร์ชัน 4.3.11.สุดท้าย   -  person Djama    schedule 04.11.2015
comment
ฉันคิดว่าคุณเพิ่มช่องว่างหลังจาก org.hibernate.dialect.MySQL5Dialect ....? ฉันเห็นช่องว่างใน stacktrace [org.hibernate.dialect.MySQL5Dialect ]   -  person Si mo    schedule 04.11.2015


คำตอบ (2)


เนื่องจากข้อความแสดงข้อผิดพลาดของคุณมีพื้นที่พิเศษที่น่าสงสัยในตอนท้าย:

Unable to resolve name [org.hibernate.dialect.MySQL5Dialect ]

ฉันจะเดาว่าคุณมีพื้นที่เพิ่มเติมที่ส่วนท้ายของคุณสมบัติภาษาถิ่นของคุณ

ดังนั้นจงมองหา

"org.hibernate.dialect.MySQL5Dialect "

และเปลี่ยนเป็น:

"org.hibernate.dialect.MySQL5Dialect"
person Gergely Bacso    schedule 04.11.2015
comment
ใช่ คุณพูดถูก ไม่รู้ว่านี่อาจเป็นสาเหตุของข้อผิดพลาด :) ดีใจที่ได้เรียนรู้สิ่งนั้น - person Djama; 04.11.2015
comment
ข้อผิดพลาดที่พบบ่อยที่สุดโดยปกติคือการใช้ภาษาถิ่นที่ยังไม่ได้เพิ่มเข้าไปในรุ่นจำศีลนั้น ๆ หรือการพิมพ์ผิดที่ตลกซึ่งส่วนใหญ่มีข้อผิดพลาดตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก - person Gergely Bacso; 04.11.2015
comment
ฉันจะมีปัญหาเดียวกันได้อย่างไร เฮ้พวกเรา 38 คนทำ คลั่งไคล้! - person markthegrea; 01.11.2018

ขอบคุณ! ฉันก็มีปัญหาเดียวกันในเรื่องพื้นที่เพิ่มเติม แค่เราต้องแน่ใจว่าเมื่อใดก็ตามที่เราคลิกที่บรรทัดต่างๆ ในไฟล์ app.properties เคอร์เซอร์ควรอยู่ท้ายสุด ข้างตัวอักษร t ของ MySQL8Dialect ใส่ค่าของคีย์ spring.jpa.properties.hibernate.dialect ด้วยเครื่องหมายคำพูดแล้วลบออก ด้วยวิธีนี้ฉันต้องแก้ไขปัญหา เนื่องจากเคอร์เซอร์ไม่ได้มาหลังตัวอักษร t

person ShrikantMane    schedule 09.05.2021
comment
โปรดใช้ถ้อยคำใหม่เพื่อทำให้คำตอบนี้ชัดเจนยิ่งขึ้น และดูคำอธิบายปัญหาของคุณน้อยลง - person Yunnosch; 09.05.2021