I'm facing problems saving data objects to the database with Hibernate.
Problem is 415 Unsuportted Media Types
message":"Failed to evaluate Jackson deserialization for type [[simple type, class invent.billing.Model.TarifPlanClient]]: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot handle managed/back reference 'defaultReference': back reference type (java.util.List) not compatible with managed type (invent.billing.Model.Client)
My Client class:
@Getter
@Setter
@Entity
@Table(name = "CLIENT")
public class Client extends AbstractEntity
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "seq_client")
@SequenceGenerator(name = "seq_client", sequenceName = "seq_client", allocationSize = 1)
@Column(name = "ID", updatable = false, nullable = false)
private Long id;
@JsonManagedReference
@ManyToMany
@JoinTable(
name = "LT_CONTRACT_CLIENT",
joinColumns = @JoinColumn(name = "CLIENT"),
inverseJoinColumns = @JoinColumn(name = "CONTRACT"))
List<Contract> linkContract;
@NotNull
@Column(name = "CODE")
private String code;
@Column(name = "NAME")
private String name;
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id",
resolver = EntityIdResolver.class,
scope = BillingSystem.class)
@JsonIdentityReference(alwaysAsId=true)
/*@JsonIgnore*/
@ManyToOne(/*fetch = FetchType.LAZY, optional = false*/)
@JoinColumn(name = "SYSTEM")
private BillingSystem billingSystem;
@ManyToOne(fetch = FetchType.LAZY, optional = false )
@JoinColumns({
@JoinColumn(name = "PERSON_ID_HIS", referencedColumnName = "ID_HIS") })
@JsonBackReference
private Person person;
@Column(name = "ID_FROM_SOURCE")
private String idFromSource;
@JsonIgnore
@CreatedDate
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATE_CREATE", updatable = false)
private Date createDate = new Date();
@JsonIgnore
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATE_LAST_EDITED", nullable = true, insertable = false)
private Date lastEditedDate = new Date();
@JsonIgnore
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATE_DELETE", nullable = true, insertable = false)
private Date deleteDate = new Date();
}
My TarifPlanClient class:
@Entity
@Table(name = "LT_TARIFF_PLAN_CLIENT")
@Getter
@Setter
@Data
public class TarifPlanClient extends AbstractEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_tariff_plan_client")
@SequenceGenerator(name = "seq_tariff_plan_client", sequenceName = "seq_lt_tariff_plan_client", allocationSize = 1)
@Column(name = "ID", updatable = false, nullable = false)
private Long id;
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id",
resolver = EntityIdResolver.class,
scope = Client.class)
@JsonIdentityReference(alwaysAsId=true)
@ManyToOne(/*fetch = FetchType.EAGER, optional = false*/)
@JoinColumn(name = "CLIENT")
private Client client;
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id",
resolver = EntityIdResolver.class,
scope = TarifPlan.class)
//@JsonIdentityReference(alwaysAsId=true)
@ManyToOne(/*fetch = FetchType.EAGER, optional = false*/)
@JoinColumn(name = "TARIFF_PLAN")
private TarifPlan tarif_plan;
//@JsonIgnore
@JsonFormat(pattern = ApiConstants.DATE_FORMAT)
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATEFROM", nullable = false)
private Date datefrom = null;
//@JsonIgnore
@JsonFormat(pattern = ApiConstants.DATE_FORMAT)
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATETO", nullable = false)
private Date dateto = null;
}
I'm having warning as 415 when I'm trying to save class by abstract class:
@PostMapping(value = "/create")
@Transactional
public ResponseWrapper<?> create(@RequestBody E item) {
try {
return new ResponseWrapper<>(service.add(item),HttpStatus.OK);
} catch (Exception e) {
return new ResponseWrapper<>(e,HttpStatus.INTERNAL_SERVER_ERROR);
}
}
This is how I test services by swagger.
Please could you help to resolve a problem, because I didn't see there are any mistakes? I don't understand what I'm making wrong. Thank you in advance.