Я фанат TDD, и я отказываюсь от pu sh непроверенного кода. В производстве я использую mysql версия 5.7. Я sh буду использовать Н2 в своих юнит-тестах.
У меня есть очень простая сущность под названием Message
, определенная ниже.
package com.question.domain;
import org.hibernate.envers.Audited;
import javax.persistence.*;
@Entity
@Table(name = MessageEntity.TABLE)
public class MessageEntity {
public static final String TABLE = "question";
public static final String COLUMN_MESSAGE = "massage";
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Audited
@Column(name = COLUMN_MESSAGE, nullable = false, columnDefinition = "TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")
private String message;
}
Мои тесты взрываются, потому что h2 делает не поддерживается TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
как тип столбца. Есть ли способ, которым я могу сказать hibernate использовать TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
только с mysql?
Я бы предположил, что hibernate будет иметь дополнительные аннотации, которые настраивают различные бэкэнды. Что-то вроде:
@Audited
@MysqlColumn(name = COLUMN_MESSAGE, nullable = false, columnDefinition = "TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")
private String message;