Я использую спящий режим для представления базы данных с тремя основными объектами: Пользователь, Проект и Комментарий. Пользователь и проект наследуются от базового класса. Также у проекта неограниченное количество комментариев. В POJO я попытался представить коллекцию комментариев, связанных с проектом, с помощью List<Comment>
.
Моя основная проблема заключается в том, когда ii go и возьму проект, который содержит ряд ссылок на комментарии внутри список java вызовет исключение IllegalArgumentException, говорящее, что он не может получить доступ к полю id комментария, поскольку он получает только ArrayList.
Caused by: java.lang.IllegalArgumentException: Can not set int field com.project.objects.Comment.id to java.util.ArrayList
Мои классы следующие - без конструктора / сеттера / получателя это просто:
@MappedSuperclass
public abstract class Base {
@Id
@Column
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column
private String name;
@Column
private String longDesc;
@Column
private String briefDesc;
@Column
@ElementCollection(targetClass=String.class)
private List<String> goals;
@Column
private String picture;
@Column
private int cType;
@Entity(name = "Project")
@Table(name = "project")
public class Project extends Base {
@Column
private String start;
@Column
private String end;
@Column
private String manager;
@ElementCollection(targetClass=Comment.class)
@ManyToOne(targetEntity = Comment.class, fetch = FetchType.EAGER)
@JoinColumn(name = "comment_id")
private List<Comment> comments;
@Entity(name = "Comment")
@Table(name = "comment")
public class Comment {
@Id
@Column(name="comment_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column
private String comment;
@Column
private int rating;
@Column
private int pcuser;
@Column
private int cType;