@Entity
@Table(name="Foo")
public class FooEntity {
@Id
private String name;
...
@ElementCollection(fetch=FetchType.EAGER)
private Map<String, String> properties = new HashMap<>();
...
}我有一个类似于上面所示的JPA实体。在运行上述命令时,我会得到一个"properties“表,该表的映射值列的默认最大长度为255个字符。如果我想支持值的长度为64K (而不是键),如何更改映射值的长度限制?
发布于 2015-09-25 17:26:35
您可以使用以下映射:
@Entity
@Table
public class Foo {
// ID, other properties, ...
@ElementCollection
@MapKeyColumn(name="key", length=100)
@Column(name="value", length=512)
@CollectionTable(name="properties", joinColumns=@JoinColumn(name="foo_id"))
private Map<String, String> properties;
}您感兴趣的部分是@Column注释,它允许您自定义值列的映射。
在运行模式导出时,此映射将导致遵循DDL:
CREATE TABLE properties (
foo_id INT8 NOT NULL,
value VARCHAR(512),
key VARCHAR(100) NOT NULL,
PRIMARY KEY (user_id, key)
);https://stackoverflow.com/questions/32787271
复制相似问题