使用@ElementCollection 时出错:org.hibernate.MappingException:无法确定类型:java.util.Set,在表中:列
Posted
技术标签:
【中文标题】使用@ElementCollection 时出错:org.hibernate.MappingException:无法确定类型:java.util.Set,在表中:列【英文标题】:Error while using @ElementCollection: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: for columns 【发布时间】:2019-01-30 13:04:57 【问题描述】:我有两张桌子NewsToolSearchCriteria
和NewsToolSearchCriteria_NewsSource_Relation
。
newsToolSearchCriteriaId
是对NewsToolSearchCriteria (entityID)
的外键引用我想先从里面的第二个表中查看一组元素。
尝试这样设置:
@ElementCollection
@CollectionTable(name = "NewsToolSearchCriteria_NewsSource_Relation", joinColumns = @JoinColumn(name = "newsToolSearchCriteriaId"))
@Column(name = "newsSourceCode")
private Set<String> newsSources;
public Set<String> getNewsSources()
return newsSources;
public void setNewsSources(Set<String> newsSources)
this.newsSources = newsSources;
但一直收到错误:
嵌套异常是 org.hibernate.MappingException:无法确定类型:java.util.Set,在表:dbo.NewsToolSearchCriteria,列:[org.hibernate.mapping.Column(newsSources)]
我已经尝试过使用@Column(name = "newsSourceCode", columnDefinition = "NVARCHAR(30)")
和@ElementCollection(targetClass = String.class)
我已经看到了其他类似的问题,但我使用两个实体的情况并非如此,可以使用@OneToMany
解决。
任何想法如何解决这个问题?
【问题讨论】:
你的桌子NewsToolSearchCriteria_NewsSource_Relation
怎么样?您可能想尝试@JoinTable
而不是@CollectionTable
【参考方案1】:
您只需在 getter 上添加注释而不是类参数。
我没有找到它说的地方,但他们在documentation 中使用它,它对我有用。
【讨论】:
以上是关于使用@ElementCollection 时出错:org.hibernate.MappingException:无法确定类型:java.util.Set,在表中:列的主要内容,如果未能解决你的问题,请参考以下文章
是否可以通过 ElementCollection 查询 JPA 实体,其中 ElementCollection 包含给定元素集中的所有元素?
JPA @ElementCollection 我该如何查询?
如何使用 Hibernate 获得 @ElementCollection 的总和?