我遇到了標題中描述的問題,保存我的實體,儘管代碼和數據庫表中的所有內容都可以。
這裏是我的代碼:休眠/ 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
對象我試圖保存包含以下信息:
公司(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);
}
我會收到這個正確的,自動休眠生成並填充這些對象的所有丟失的IDS?如果是,我錯過了什麼,爲什麼錯誤出現?
你是如何保存這些對象的?向我們展示一些代碼。 – nagyf
@nagyf,我用一些代碼更新答案。感謝評論! –