使用Hibernate和JPA </string,>映射Map <string,double =“”>

时间:2011-05-23 11:26:40

标签: java hibernate jpa hibernate-mapping

我尝试以下映射

@ElementCollection
private Map<String, Double> doubleValues;

但是当我从中生成模式时(使用 mvn hibernate3:hbm2ddl ),我收到以下错误:

org.hibernate.MappingException: Could not determine type for: java.util.Map, at table: ImagerAnalysisResult, for columns: [org.hibernate.mapping.Column(doubleValues)]

我已尝试向此添加列和类型信息,但我一直收到同样的错误。此外,我不认为应该提供信息,因为hibernate应该使用泛型声明(根据How to map a Map<String,Double>)。

我正在使用hibernate版本3.6.4.Final并且我尝试过其他版本

有什么建议吗?感谢。

编辑:看来maven hibernate插件已经两年了,依赖于较旧的hibernate版本......为什么这个插件没有被维护?

编辑:命名字段&#34; doubleValues&#34;确保没有保留名称问题。

2 个答案:

答案 0 :(得分:0)

“values”一词是SQL保留关键字,您不能将其用作SQL中的标识符。如果你试图命名一些“索引”,同样的事情就会出现。如果您将名称更改为其他名称,则应该有效。

你知道:

insert into table values (...)

由于使用了其他关键字,我在过去也遇到过类似的问题。

顺便说一句,在过去,我尝试了Hibernate 3.6.2和地图集合的几个问题。您可能希望take a look a this answer,因为您似乎以同样的方式前进。

我希望有所帮助!

答案 1 :(得分:0)

您可以尝试更明确:

@ElementCollection
@CollectionTable(name = "MY_ENTITY_VALUES", joinColumns = @JoinColumn(name = "entity_id"))
@Column(name = "DOUBLE_VALUES")
private Map<String, Double> doubleValues;