Datanucleus JDO + MySQL создает длинный текстовый столбец

Я пытаюсь использовать JDO DataNucleus в своем собственном проекте Java (не GAE), и мне нужно хранить довольно длинные фрагменты текста в моей БД.

Я использую Eclipse для выполнения всей грязной работы, такой как улучшение и создание схемы, но, к сожалению, все String ivars сопоставляются с VARCHAR столбцами. Но как заставить Datanucleus создать для меня столбец LONGTEXT?

Я также попробовал аннотацию @Colunn, но все равно получил VARCHAR.

    @Persistent
    @Column(name="COMPONENT", jdbcType="LONGVARCHAR", length=1000000)
    private String component;

Я также пытался указать LONGTEXT как jdbcType, но Schematool сообщил мне, что этот тип данных нельзя использовать.

Заранее спасибо,
С Новым Годом,
С уважением,
Тимофей.


person Ibolit    schedule 29.12.2011    source источник


Ответы (2)


LONGTEXT не является типом JDBC. Все они четко перечислены в http://docs.oracle.com/javase/6/docs/api/java/sql/Types.html

Журнал DataNucleus сообщает вам, какие типы JDBC доступны для этого драйвера JDBC (поскольку он предоставляет эту информацию используемому программному обеспечению). Он выбирает сопоставление типа JDBC LONGVARCHAR с "LONG VARCHAR" IIRC (легко просматривается с помощью SchemaTool "dbinfo"). Очевидно, вы могли бы сгенерировать схему в текстовый файл и обновить ее самостоятельно перед применением.

person DataNucleus    schedule 29.12.2011
comment
Спасибо за ответ. Что касается создания схемы в файл, а затем ее редактирования перед применением, мне бы очень хотелось, чтобы все происходило просто, без моего участия. Насколько я понял, нет никакого способа сказать DataNucleus использовать тип LONGTEXT, не так ли? Но могу ли я использовать определенный тип Java (например, текст Google) или написать свой собственный, который будет отображаться конкретно в LONGTEXT? - person Ibolit; 30.12.2011

@Persistent
@Column(name="COMPONENT", jdbcType="CLOB")
private String component;

Тип данных CLOB соответствует среднему тексту. Но как только база данных создана, вы можете изменить ее на LONGTEXT.

person Sumodh S    schedule 13.06.2016