Mapowanie z DTO an encję

0

Mam taką encję:

@Entity
public class Screening {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "screening_gen")
    @SequenceGenerator(name = "screening_gen", sequenceName = "sc_seq", initialValue = 1001)
    private Long id;
    @NotNull
    @OneToOne
    private Movie movie;
}

Napisałem dla niej DTO:

public class ScreeningDTO {
    private Long id;
    private Movie movie;
}

Jednak kiedy próbuję mapować z DTO to dostaję:

List of constraint violations:[
	ConstraintViolationImpl{interpolatedMessage='must not be null', propertyPath=movie, rootBeanClass=class model.Screening, messageTemplate='{javax.validation.constraints.NotNull.message}'}]]
2020-01-13 10:20:22.931 ERROR 28418 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction] with root cause

Próbowałem już kilku rozwiązań znalezionych w sieci, ale bez skutku. Stąd moje pytanie jak powinienem to zrobić?
Inicjalizuję dane wysyłając POSTa:

{
	"movie": {
		"id": 1,
		"title": "The Shawshank Redemption",
		"category": "drama"
	}
}
@Entity
public class Movie {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @NotNull
    @Size(min = 3)
    private String title;
    @Size(min = 3)
    @NotEmpty
    private String category;
}
0

Czy Movie w DTO i w Encji JPA to ta sama klasa?

0

Odpisuj w postach, będzie łatwiej.

Problem polega na tym, że do DTO wpakowujesz klasę @Entity, jeśli chcesz tak to mapować to musisz sobie jeszcze stworzyć DTO'sa do Movie.
No, ale ogólnie ten DTOs nie ma chyba sensu, bo w zasadzie wysyłasz dalej i tak 1:1 Encję JPA.

1 użytkowników online, w tym zalogowanych: 0, gości: 1