[SPRING] JDBC 유형에 대한 Dialect 매핑이 없습니다 : 1111
SPRINGJDBC 유형에 대한 Dialect 매핑이 없습니다 : 1111
Spring JPA Application에서 데이터베이스로 MySQL을 사용하고 있습니다. 나는 모든 spring-jpa 라이브러리들, 즉 hibernate와 mysql-connector-java가로드되었는지 확인했다.
나는 mysql 5 인스턴스를 실행 중이다. 다음은 내 application.properties 파일의 발췌 부분입니다.
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.datasource.url=jdbc:mysql://localhost/mydatabase
spring.datasource.username=myuser
spring.datasource.password=SUPERSECRET
spring.datasource.driverClassName=com.mysql.jdbc.Driver
통합 테스트를 수행 할 때 스프링은 제대로 시작되지만 최대 절전 모드 SessionFactory 생성시 실패합니다. 단, 예외는 있습니다.
org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
나는 내 방언이 Mysql5Dialect 여야한다고 생각한다. 또한 명시 적으로 InnoDB와 버전 5를 나타내지 않는 두 가지 dialect 옵션을 시도했다. 그러나 나는 항상 같은 'JDBC 유형에 대한 Dialect 매핑 없음 : 1111'메시지로 끝난다. . 내 application.properties 파일은 test / resources 소스 폴더에 있습니다. JUnit Test 주자 (이전에 오타가 있었으므로 예외가 있음)가 인식합니다.
내가 설정 한 속성이 잘못 되었습니까? 이 속성 이름에 대한 공식 문서를 찾을 수는 없지만이 stackoverflow 응답에 힌트가 있습니다. https://stackoverflow.com/a/25941616/1735497
당신의 답변을 기다리고 있습니다, 감사합니다!
BTW 응용 프로그램이 이미 스프링 부팅을 사용하고 있습니다.
해결법
-
==============================
1.SubOptimal의 주석을 기반으로 한 대답은 다음과 같습니다.
SubOptimal의 주석을 기반으로 한 대답은 다음과 같습니다.
오류 메시지는 실제로 하나의 열 유형을 최대 절전 모드로 데이터베이스 유형에 매핑 할 수 없다고 말합니다. 필자의 경우에는 일부 엔티티에서 기본 키로 사용하는 java.util.UUID 유형이었습니다. @Type (type = "pg-uuid")에 대한 주석 @Type (type = "uuid-char")을 적용하기 만하면됩니다.
-
==============================
2.이 예외를 던지는 또 다른 일반적인 유스 케이스가있다. void를 반환하는 함수를 호출합니다. 더 많은 정보와 솔루션을 보려면 여기를 클릭하십시오.
이 예외를 던지는 또 다른 일반적인 유스 케이스가있다. void를 반환하는 함수를 호출합니다. 더 많은 정보와 솔루션을 보려면 여기를 클릭하십시오.
-
==============================
3.일부 열 반환 많은 경우 Query에서 알 수없는 형식이 있는지 확인하십시오.
일부 열 반환 많은 경우 Query에서 알 수없는 형식이 있는지 확인하십시오.
예 : column_name이 유형을 알 수 없으므로 '1'
column_name은 Integer가 1이므로 올바른 것입니다.
이 일은 나를 위해 일했다.
-
==============================
4.때로는 SQL 프로 시저 / 함수를 호출 할 때 뭔가 반환해야 할 수도 있습니다. void를 반환 해 볼 수 있습니다 : RETURN; 또는 문자열 (이것은 나를 위해 일했다) : 반환 '확인'
때로는 SQL 프로 시저 / 함수를 호출 할 때 뭔가 반환해야 할 수도 있습니다. void를 반환 해 볼 수 있습니다 : RETURN; 또는 문자열 (이것은 나를 위해 일했다) : 반환 '확인'
-
==============================
5.내 쿼리에서 UUID 열을 반환했기 때문에 동일한 오류가 발생했습니다. "캐스팅 (columnName as varchar)"과 같은 쿼리를 통해 UUID 열을 varchar 유형으로 반환 한 것을 수정하려면 문제가 해결되었습니다.
내 쿼리에서 UUID 열을 반환했기 때문에 동일한 오류가 발생했습니다. "캐스팅 (columnName as varchar)"과 같은 쿼리를 통해 UUID 열을 varchar 유형으로 반환 한 것을 수정하려면 문제가 해결되었습니다.
예:
public interface StudRepository extends JpaRepository<Mark, UUID> { @Modifying @Query(value = "SELECT Cast(stuid as varchar) id, SUM(marks) as marks FROM studs where group by stuid", nativeQuery = true) List<Student> findMarkGroupByStuid(); public static interface Student(){ private String getId(); private String getMarks(); } }
-
==============================
6.오래된 hibernate (3.x) 버전으로이 에러를 얻는 사람은 :
오래된 hibernate (3.x) 버전으로이 에러를 얻는 사람은 :
반환 유형을 대문자로 쓰지 마십시오. Hibernate 타입 구현 매핑은 소문자 리턴 타입을 사용하고 그것들을 변환하지 않는다 :
CREATE OR REPLACE FUNCTION do_something(param varchar) RETURNS integer AS $BODY$ ...
-
==============================
7.제 경우에는 문제가 생겼습니다. 사용자 클래스에 저장된 프로 시저를 설정할 때 resultClasses 특성을 추가하는 것을 잊었습니다.
제 경우에는 문제가 생겼습니다. 사용자 클래스에 저장된 프로 시저를 설정할 때 resultClasses 특성을 추가하는 것을 잊었습니다.
@NamedStoredProcedureQuery(name = "find_email", procedureName = "find_email", resultClasses = User.class, //<--I forgot that. parameters = { @StoredProcedureParameter(mode = ParameterMode.IN, name = "param_email", type = String.class) }),
from https://stackoverflow.com/questions/28192547/no-dialect-mapping-for-jdbc-type-1111 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Java Config (no xml)에 SaltSource 등록하는 방법 (0) | 2019.01.06 |
---|---|
[SPRING] 봄 보안에서 현재 로그인 한 사용자 객체를 얻는 방법? (0) | 2019.01.06 |
[SPRING] 봄 사용자 정의 JSF 로그인 페이지, 항상 "잘못된 자격 증명" (0) | 2019.01.06 |
[SPRING] Spring JSP 페이지에서 콜렉션을 사용하는 동안 Hibernate LazyInitializationException이 발생한다. (0) | 2019.01.06 |
[SPRING] 415 지원되지 않는 미디어 유형 (Spring 3.2 포함) (0) | 2019.01.06 |