Тестирование спящего объекта на H2 - PullRequest
1 голос
/ 11 января 2020

Я фанат 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;
...