2011-12-29 2 views
0

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

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

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

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

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

Спасибо заранее,
С Новым годом,
С наилучшими пожеланиями,
Тимофея.

ответ

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»). Очевидно, вы могли бы сгенерировать схему в текстовый файл и обновить ее перед ее применением.

+0

Благодарим за ответ. Что касается генерации схемы в файл, а затем ее редактирования перед ее применением, мне бы очень хотелось, чтобы все «просто случилось», без моего взаимодействия. Насколько я понял, нет способа сообщить DataNucleus использовать тип LONGTEXT, не так ли? Но могу ли я использовать конкретный тип Java (например, текст Google) или написать свой собственный, который будет отображаться конкретно в LONGTEXT? – Ibolit

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

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

Смежные вопросы