您可以@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。