Незаконная попытка сопоставить элементы, не являющиеся коллекцией, как многие, многие из них или коллекцию, весной - PullRequest
2 голосов
/ 25 января 2020

Я хочу отправить JSON как POST-запрос для вставки в базу данных. Ниже приведены JSON

{
    "url": "https://www.tec.com",
    "status":"Regular",
     "Student": 
     {
         "id": 1,
         "name": "John Doe",
         "age": 12      
    }
}

, где у меня есть основной класс

Данные. java

@ToString
@Setter
@Getter
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "data")
public class Data implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public int id;
    private String url;
    private String status;

    @ElementCollection
    private Student student;
}

Студент. java


@ToString
@Setter
@Getter
@AllArgsConstructor
@Entity
@NoArgsConstructor
@Table(name = "Student")
public class Student implements Serializable {
    @Id
    private int id;
    private String name;
    private int age;
}

Скажите, пожалуйста, как решить эту проблему. Чтобы данные сохранялись в базе данных при отправке JSON в указанном выше формате.

1 Ответ

3 голосов
/ 09 февраля 2020

Вы получаете это сообщение об ошибке, потому что вы поместили аннотацию @ElementCollection в student.

Эта аннотация предназначена для коллекций. Он предназначен для размещения на элементах сущностей, таких как наборы, списки и т. Д. c.

. Вы должны удалить эту аннотацию из student и заменить ее на @OneToOne

public class Data implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public int id;
    private String url;
    private String status;

    @OneToOne(cascade=CascadeType.ALL)
    private Student student;
}

@OneToOne означает, что есть один Student для каждого Data (cascade=CascadeType.ALL) означает, что если вы сохраните Data, его student также будет сохранено.

Другой вариант заменить одного студента набором студентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...