Spring Boot & Hibernate: тип столбца NVARCHAR без аннотации @Type - PullRequest
0 голосов
/ 22 апреля 2020

В моей базе данных есть таблица для моего Customer объекта. Эта таблица содержит некоторые столбцы типа NVARCHAR (это требование, я не могу его изменить), но Hibernate не может сопоставить этот тип столбца с правильным свойством в моем Entity без использования @Type аннотации, он жалуется, что ожидал столбец с типом VARCHAR вместо NVARCHAR:

@Entity
public class Customer {
  // ...

  @Column(name = "first_name", nullable = false)
  @Type(type="org.hibernate.type.StringNVarcharType")
  private String firstName;

  // ...
}

Есть ли способ настроить hibernate для возможности сопоставления с типом NVARCHAR без использования @Type аннотация, которая соответствует спецификации JPA?

Версия Spring Boot: 2.1.12.RELEASE
Версия Hibernate: 5.3.15.Final
Диалект Hibernate: org.hibernate.dialect.SQLServer2012Dialect

1 Ответ

1 голос
/ 22 апреля 2020

Рекомендуется использовать аннотацию @Nationalized:

@Entity
public class Customer {
  // ...

  @Column(name = "first_name", nullable = false)
  @Nationalized 
  private String firstName;

  // ...
}

Но вы также можете установить это по умолчанию:

Если ваше приложение и база данных используют национализацию, вместо этого вы можете захотеть включить национализированные символьные данные по умолчанию.

Вы можете сделать это с помощью параметра hibernate.use_nationalized_character_data или путем вызова MetadataBuilder # enableGlobalNationalizedCharacterDataSupport во время bootstrap.

В application.properties, которые вы можете установить:

spring.jpa.properties.hibernate.use_nationalized_character_data =true

Подробнее об этом в документах Hibernate https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#basic -национализировано

...