类定义
@Entity
@Table(name = "t_domain")
public class Domain(){
@Id
String id;
String fieldA;
String fieldB;
String fieldC;
List<String> operations;
}
表定义
CREATE TABLE `t_domain` (
`id` varchar(38) ,
`fieldA` varchar(255) ,
`fieldB` varchar(255) ,
`fieldC` varchar(255) ,
`operations` varchar(255) ,
PRIMARY KEY (`id`)
)
JSON
{"id":"1",
"fieldA":"a",
"fieldB":"b",
"fieldC":"c",
"operations":["a","b"]}
The ElementCollection values are always stored in a separate table.
表示此页面['https://en.wikibooks.org/wiki/Java_Persistence/ElementCollection']。
在jpa 2.0中,@ElementCollection
是保存集合的一种方法,但是它似乎需要一个新表来存储集合值。
问题:
我不想创建在domain_operation
中定义的another_table_name
或@CollectionTable(name="another_table_name")
这样的新表。
我只想将json保存到mysql中。
我正在使用Hibernate 4.3.11
答案 0 :(得分:0)
忽略以下内容,它是指问题的原始版本
@ElementCollection
@CollectionTable(
name="t_domain",
joinColumns=@JoinColumn(name = "id", referencedColumnName = "id")
)
@Column(name="operations")
在未指定表名的情况下,Hibernate使用entityName_collectionName
,在您的情况下为domain_operation
答案 1 :(得分:0)
您是否尝试过手动使用序列化器?
String operations;
@Transient
private ObjectMapper mapper;
public void setOperationsList(List<String> in) throws JsonProcessingException {
operations = mapper.writeValueAsString(in);
}
public List<String> getOperationsList() throws IOException {
return mapper.readValue(operations, new TypeReference<List<String>>(){});
}
}