我尝试以下映射
@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;确保没有保留名称问题。
答案 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;