Подтвердить что ты не робот

Как я могу определить тип "ТЕКСТ", используя eBean in Play! фреймворк?

Когда я определяю переменную в классе Model как String, она преобразуется как "VARCHAR (255)" в DB.

Тем не менее, я хочу сохранить более 255, потому что эти данные представляют собой очень длинный текст, состоящий из нескольких абзацев.

Насколько я помню, в DB существует тип TEXT для сохранения очень длинного текста.

Как я могу определить тип TEXT в Play! рамки?

Я попробовал Constraints.MaxLength и Constraints.Max, определенные в Play! framework api.

Однако файл 1.sql(созданный Ebean DDL автоматически) определяет эту переменную как VARCHAR (255).

Спасибо, заранее!

4b9b3361

Ответ 1

В вашей модели просто используйте определение столбца как TEXT:

@Entity
public class MyEntity extends Model {

    @Id
    private Long id;

    @Column(columnDefinition = "TEXT")
    private String aLongText;
    ....

}

Я уже использовал его с Postgres, не знаю, нормально ли это с другим сервером базы данных.

Ответ 2

Вы можете использовать аннотацию @Lob в своем поле, которая даст тип longtext в MySQL и наберите text на PostgreSQL:

package models;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;

@Entity
public class Foo {

    @Id
    public Long id;

    @Lob
    public String bar;

}

в MySQL это дает:

mysql> describe foo;
+-------+------------+------+-----+---------+----------------+
| Field | Type       | Null | Key | Default | Extra          |
+-------+------------+------+-----+---------+----------------+
| id    | bigint(20) | NO   | PRI | NULL    | auto_increment |
| bar   | longtext   | YES  |     | NULL    |                |
+-------+------------+------+-----+---------+----------------+
2 rows in set (0.00 sec) 

в PostgreSQL это дает:

foodb=> \d foo;
     Table "public.foo"
 Column |  Type  | Modifiers
--------+--------+-----------
 id     | bigint | not null
 bar    | text   |
Indexes:
    "pk_foo" PRIMARY KEY, btree (id)

В соответствии с Java EE api:

Тип Lob выводится из типа постоянного поля или свойства

Это означает, что поле типа String должно дать вам некоторый текст blob, а поле типа byte[] должно дать вам двоичный blob.