Java 使用hibernate映射基本类型集合

Java 使用hibernate映射基本类型集合,java,spring,hibernate,spring-mvc,hibernate-mapping,Java,Spring,Hibernate,Spring Mvc,Hibernate Mapping,我试图持久化一个列表,但是我得到了这个错误 org.hibernate.MappingException: Could not determine type for: java.util.List, at table: Person, for columns: [org.hibernate.mapping.Column(comments)] 我使用了hibernate文档中指定的@ElementCollection注释。我看不出还有什么好尝试的 请忽略这一段,因为它是我提交问题所必需的 imp

我试图持久化一个列表,但是我得到了这个错误

org.hibernate.MappingException: Could not determine type for: java.util.List, at table: Person, for columns: [org.hibernate.mapping.Column(comments)]
我使用了hibernate文档中指定的@ElementCollection注释。我看不出还有什么好尝试的

请忽略这一段,因为它是我提交问题所必需的

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;




import org.hibernate.annotations.GenericGenerator;
import org.springframework.stereotype.Component;


@Component
@Entity
public class Person {
    private String name;

private Long id;
private String reviewName;
private String review;
private List<String> comments = new ArrayList<String>();


public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy="increment")
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

@Column(columnDefinition="LONGTEXT")
public String getReview() {
    return review;
}

public void setReview(String review) {
    this.review = review;
}

public String getReviewName() {
    return reviewName;
}

public void setReviewName(String reviewName) {
    this.reviewName = reviewName;
}

public List<String> getComments() {
    return comments;
}

@ElementCollection
public void setComments(List<String> comments) {
    this.comments = comments;
}

public void addComment(String comment) {
    getComments().add(comment);
}
import java.util.ArrayList;
导入java.util.List;
导入javax.persistence.Column;
导入javax.persistence.ElementCollection;
导入javax.persistence.Entity;
导入javax.persistence.GeneratedValue;
导入javax.persistence.Id;
导入org.hibernate.annotations.GenericGenerator;
导入org.springframework.stereotype.Component;
@组成部分
@实体
公共阶层人士{
私有字符串名称;
私人长id;
私有字符串reviewName;
私人字符串审查;
私有列表注释=新建ArrayList();
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
@身份证
@生成值(生成器=“增量”)
@GenericGenerator(name=“increment”,strategy=“increment”)
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
@列(columnDefinition=“LONGTEXT”)
公共字符串getReview(){
回报审查;
}
公共void setReview(字符串审阅){
这个。回顾=回顾;
}
公共字符串getReviewName(){
返回reviewName;
}
公共void setReviewName(字符串reviewName){
this.reviewName=reviewName;
}
公共列表getComments(){
返回评论;
}
@元素集合
公共注释(列出注释){
this.comments=注释;
}
公共void addComment(字符串注释){
getComments().add(comment);
}

}

@elementcollection注释应该放在getter(getComments())而不是setter上

问题是您应该

@ElementCollection(targetClass=String.class)
在每次提到集合类型(map/list/etc)之前,包括属性声明和方法声明

不是在一个提到“而不是”另一个之前,而是在任何地方