コードとdbテーブル内のすべてがOKであるものの、私のエンティティを保存するタイトルに記載された問題に直面しました。ここ
は私のコードです:ここではフィールド '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;
}
は、私のテーブル定義である:
カンパニー(ID = 32、companyObjects:私は保存しようとしている
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
オブジェクトには、以下の情報が含まれています= [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、私はいくつかのコードで答えを更新します。コメントありがとう! –