코드 및 db 테이블의 모든 내용이 정상인 것처럼 보이지만 본인의 항목을 저장하는 제목에서 설명한 문제에 직면했습니다. 내가 저장하기 위해 노력하고있어Hibernate/JPA, 필드 'accreditation_company_id'에 기본값이 없습니다. 오류
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
객체는 다음과 같은 정보를 포함합니다 :
회사 (ID가 = 32, companyObjects 여기
@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;
}
내 테이블 정의입니다 :
여기 내 코드입니다 = [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);
}
내가 생성하고 이러한 개체의 모든 누락 된 ID를 채우는 자동으로 최대 절전이 권리는 무엇입니까? 예인 경우 무엇이 누락되며 오류가 나타나는 이유는 무엇입니까?
어떻게 이러한 개체를 저장 하시겠습니까? 몇 가지 코드를 보여주십시오. – nagyf
@ nagyf, 일부 코드로 답변을 업데이트합니다. 코멘트 주셔서 감사합니다! –