Я столкнулся с проблемой, описанной в заголовке, сохраняющим мою сущность, хотя все в таблицах кода и db выглядит нормально.
Вот мой код:Hibernate/JPA, поле 'accreditation_company_id' не имеет значения по умолчанию
@Entity
public class Company {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "company_id", referencedColumnName = "id")
List<CompanyObject> companyObjects;
}
@Entity
public class CompanyObject {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Enumerated(EnumType.STRING)
ObjectType type;
}
Вот мои определения таблицы:
CREATE TABLE `company` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8
CREATE TABLE `company_object` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`company_id` bigint(20) NOT NULL,
`type` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `FK__company` (`company_id`),
CONSTRAINT `FK__company` FOREIGN KEY (`company_id`) REFERENCES `company` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Объект Я пытаюсь сохранить содержит следующую информацию:
Company (ID = 32, companyObjects = [CompanyObject (id = null, type = NEW)])
Вот код, который я использую для сохранения объекта:
МетодКонтроллер:
@RequestMapping(value = "/company/{id}", method = RequestMethod.POST)
public String editCompany(@PathVariable("id") long companyId,
@ModelAttribute("form") CompanyDto form) {
Company company = companyService.getCompanyById(companyId);
companyService.updateCompany(company, form);
return "redirect:/companies";
}
метод обслуживания:
@Transactional
public Company updateCompany(Company company, final CompanyDto form) {
company.getCompanyObjects().clear();
company.getCompanyObjects().addAll(form.getCompanyObjects());
return companyRepository.save(company);
}
Я получаю это право, что спящий режим автоматически генерировать и заполнить все недостающие идентификаторы в этих объектах? Если да, то чего мне не хватает и почему появляется ошибка?
Как вы сохраняете эти объекты? Покажите нам какой-то код. – nagyf
@nagyf, я обновляю ответ с помощью некоторого кода. Спасибо за комментарий! –