Hibernate не создает правильные поля для Clobs в MySQL - PullRequest
1 голос
/ 24 января 2010

У меня есть строка в моей сущности

@Column(length=40000)
@Lob
private String introText;

Столбцом в моей базе данных MySQL, который Hibernate создает для introText, является varchar (255), который не совпадает с длиной столбца или аннотацией @Lob. Есть идеи? Я относительно новичок в Hibernate, поэтому мне интересно, если я пропускаю какие-либо другие настройки или конфигурации.

1 Ответ

1 голос
/ 02 февраля 2010

После выполнения следующих действий

// Notice without @Lob
@Column(length=4000)
private String getIntroText() {
    return this.introText;
}

В сценарии я вижу

IntroText TEXT

Так что это не работает, как ожидалось. Поэтому мой совет: используйте вместо атрибута columnDefinition

Это позволяет вам определить точный DDL, используемый для определения типа столбца

@Lob
@Column(columnDefinition="TEXT (4000)")
private String getIntroText() {
    return this.introText;
}

Теперь все работает отлично! Вы можете проверить, если вы хотите

AnnotationConfiguration configuration = new AnnotationConfiguration();

configuration
    .addAnnotatedClass(<YOUR_ENTITY_GOES_HERE>.class)
    .setProperty(Environment.HBM2DDL_AUTO, "create")
    .setProperty(Environment.USER, "<USER_GOES_HERE>")
    .setProperty(Environment.PASS, "<USER_PASS_GOES_HERE>")
    .setProperty(Environment.SHOW_SQL, "true")
    .setProperty(Environment.FORMAT_SQL, "true")
    // Set up your dialect according to the Target MySQL
    .setProperty(Environment.DIALECT, "org.hibernate.dialect.MySQLDialect")
    .setProperty(Environment.DRIVER, "com.mysql.jdbc.Driver")
    .setProperty(Environment.URL, "jdbc:mysql://127.0.0.1:3306/<YOUR_SCHEMA_GOES_HERE>");

SchemaExport schema = new SchemaExport(configuration);
schema.setOutputFile("schema.sql");

schema.create(true, true);

Просто совет: если возможно, поместите конфигурацию аннотации в метод getter вместо поля member Hibernate использует Proxies для своей работы. И это прекрасно работает при использовании конфигурации аннотации в методе получения.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...