Я использую отношения один ко многим с гибернацией и весенней загрузкой, и я получаю эту ошибку
при добавлении новой компании или обновлении компании
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'activity' cannot be null
и та же ошибка при добавлении нового контакта или обновлении контакта
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'fk_company' cannot be null
Мои классы Entity:
@Entity
public class Company {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Column(name = "name", unique = true, nullable = false)
private String name;
@Column(name = "activity", nullable = false)
private String activity;
@Column(name = "address", nullable = false)
private String address;
@Column(name = "city", nullable = false)
private String city;
@Column(name = "logo", nullable = true)
private String logo;
@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "company", fetch = FetchType.LAZY)
@JsonManagedReference
private Set<Contact> contacts = new HashSet<Contact>();
}
@Entity
public class Contact implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Column(name = "email", unique = true, nullable = false)
private String email;
@Column(name = "phone", unique = true, nullable = false)
private long phone;
@Column(name = "firstName", nullable = false)
private String firstName;
@Column(name = "lastName", nullable = false)
private String lastName;
@Column(name = "job", nullable = false)
private String job;
@Column(name = "birthday", nullable = true)
private Date birthday;
@ManyToOne
@JoinColumn(name = "fk_company", nullable = false)
@JsonBackReference
private Company company;
}
Вот код сохранения / обновления компании или контакта
@RestController
public class CompanyRestService {
@Autowired
private CompanyRepository companyRepository;
@RequestMapping(value="/companies", method=RequestMethod.POST)
@ResponseBody
public Company save(Company c){
return companyRepository.save(c);
}
@RequestMapping(value="/companies/{id}", method=RequestMethod.PUT)
@ResponseBody
public Company update(@PathVariable Long id, Company c){
c.setId(id);
return companyRepository.save(c);
}
}
ving @RestController
public class ContactRestService {
@Autowired
private ContactRepository contactRepository;
@RequestMapping(value="/contacts", method=RequestMethod.POST)
@ResponseBody
public Contact save(Contact c){
return contactRepository.save(c);
}
@RequestMapping(value="/contacts/{id}", method=RequestMethod.PUT)
@ResponseBody
public Contact update(@PathVariable Long id, Contact c){
c.setId(id);
return contactRepository.save(c);
}
}
Я уже пытался сохранить и обновить контакт без сопоставления «OneToMany», и оно сработало для меня, мне интересно, если это проблема сопоставления?
У вас есть представление о том, что может вызвать эту проблему?
Ссылка на проект Github