У меня возникли проблемы с отображением байтового массива в базу данных MySQL в Hibernate, и мне было интересно, не упускаю ли я что-нибудь очевидное. Мой класс выглядит примерно так:
public class Foo {
private byte[] bar;
// Getter and setter for 'bar'
}
Таблица определена так в MySQL 5.5:
CREATE TABLE foo (
bar BINARY(64) NOT NULL)
И отображение Hibernate 3.6.2 выглядит примерно так:
<hibernate-mapping>
<class name="example.Foo" table="foo">
<property name="bar" column="bar" type="binary" />
</class>
</hibernate-mapping>
Я использую hbm2ddl только для проверки, и это дает мне это ошибка при развертывании приложения:
Wrong column type in foo for column bar. Found: binary, expected: tinyblob
Если использование type = "binary" в сопоставлении не приведет к тому, что Hibernate будет ожидать, что тип столбца будет двоичным (вместо tinyblob), я не знаю, что произойдет. Я потратил некоторое время на поиск в Google, но не смог найти точную ошибку. Решения для подобных ошибок заключались в том, чтобы ...
Есть ли что-нибудь особенное в этой настройке, что могло бы вызвать это несоответствие? Если я укажу type = "binary" вместо "blob", почему Hibernate ожидает blob вместо двоичного?