Что происходит?
Таблицы создавались hibernate автоматически на основе определений в самих классах сущностей, при этом содержимое сценария создания было частично игнорируется.
Как выглядит длина столбца сущности?
@Entity
@Table(name = "myTable", schema="mySchema")
public class myEntity {
@Column(length=2000) private String myField;
}
Какие биты скрипта были нужны?
Единственная часть сценария db/sql/test.sql
, необходимая для создания схемы.
CREATE SCHEMA IF NOT EXISTS "MYSCHEMA";
А как насчет таблиц и столбцов?
Все таблицы,столбцы и размеры столбцов затем автоматически генерировались из @Entity
классов.
Что еще нужно знать?
Да, также полезно знать, что всеString
вводит в Entity по умолчанию реализацию varchar(255)
, поэтому для любого поля, которое длиннее этого, вам нужно будет указать аннотацию @Column(size=...)
.
TL; DR?
Длина столбца в созданной базе данных была получена из моей @Column
аннотацииа не из оператора CREATE TABLE
скрипта .sql!
Приложение
С настроенным H2, я мог бы легко переключаться между использованием SQL Server или H2 для диагностикипроблемы при воспроизведении тестового случая.
Спасибо H2!
Сообщения об ошибках H2 сообщают мне, какие именно данные будут усечены и какой столбец был затронут, и какова длинафактических данных было.После определения столбца и данных я смог разобраться в коде, чтобы выяснить, откуда он взялся.