@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
テキストブロブを提供し、タイプのフィールドはbyte[]
バイナリブロブを提供する必要があります。