使用 @ElementCollection 时出错:org.hibernate.MappingException:无法确定类型:java.util.Set,在 table:对于列
Error while using @ElementCollection: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: for columns
我有两个 tables NewsToolSearchCriteria
和 NewsToolSearchCriteria_NewsSource_Relation
。
newsToolSearchCriteriaId
是对NewsToolSearchCriteria (entityID)
的外键引用我想先从第二个table里面看一组元素
尝试这样设置:
@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;
}
但一直收到错误:
nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: dbo.NewsToolSearchCriteria, for columns: [org.hibernate.mapping.Column(newsSources)]
我已经尝试使用 @Column(name = "newsSourceCode", columnDefinition = "NVARCHAR(30)")
和 @ElementCollection(targetClass = String.class)
我已经看到其他类似的问题,但我使用两个实体的情况并非如此,可以使用 @OneToMany
.
解决
有解决此问题的想法吗?
您只需在 getter 上添加注释而不是 class 参数。
我没有找到它说的地方,但他们在 documentation 中使用它并且对我有用。
我有两个 tables NewsToolSearchCriteria
和 NewsToolSearchCriteria_NewsSource_Relation
。
newsToolSearchCriteriaId
是对NewsToolSearchCriteria (entityID)
的外键引用我想先从第二个table里面看一组元素
尝试这样设置:
@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;
}
但一直收到错误:
nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: dbo.NewsToolSearchCriteria, for columns: [org.hibernate.mapping.Column(newsSources)]
我已经尝试使用 @Column(name = "newsSourceCode", columnDefinition = "NVARCHAR(30)")
和 @ElementCollection(targetClass = String.class)
我已经看到其他类似的问题,但我使用两个实体的情况并非如此,可以使用 @OneToMany
.
有解决此问题的想法吗?
您只需在 getter 上添加注释而不是 class 参数。
我没有找到它说的地方,但他们在 documentation 中使用它并且对我有用。