[英]Hibernate OneToMany table not being updated
我将表动物与OneToMany映射到表EventAnimal:
@OneToMany(mappedBy = "animal")
public Set<EventAnimal> getEventAnimals() {
return eventAnimals;
}
表EventAnimal看起来像这样
@Entity
@Table(name = "eventAnimal")
public class EventAnimal {
@Id
int id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "userEvent_id")
UserEvent userEvent;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "animal_id", nullable=false)
Animal animal;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "eventAnimalClass_id")
EventAnimalClass eventAnimalClass;
}
当我将事件动物添加到动物并保存动物时,数据库未更新:
//Create EventAnimal object, set properties
eventAnimal.setUserEvent(newEvent);
eventAnimal.setAnimal(animal);
animal.getEventAnimals().add(eventAnimal);
animalPersistenceService.saveAnimal(animal);
我究竟做错了什么? 当我尝试插入事件动物时,例如eventAnimalDao.insert(eventAnimal);
代替
animalPersistenceService.saveAnimal(animal);
我得到一个例外,即使我设置了“ animal_id”也没有默认值。
您的ID生成策略是什么? 您是自己生成ID还是将其留给数据库? 如果将其放入数据库:
@GeneratedValue(strategy=GenerationType.AUTO)
您可能也想将密钥更新为Integer而不是int,但不要认为这是问题所在。
另外,如果您想在动物中添加事件并希望保留该事件,则将您的映射更新为:
@OneToMany(mappedBy = "animal", cascade = CascadeType.ALL)
我有表Company与OneToMany映射到表Customer:
//bi-directional many-to-one association to Customer
@OneToMany(mappedBy="company")
private Set<Customer> customer;
我已经从tis格式映射:
//bi-directional many-to-one association to Company
@ManyToOne
@JoinColumn(name="company_id")
private Company company;
我已使用此代码,成功添加,编辑和删除功能正在运行。
增加功能:
Customer customer = new Customer();
Company company = new Company();
company.setCompanyId(intCompanyId);
customer.setCompany(company);
我解决了这个问题。 这是一个很愚蠢的错误-脚本没有从表中删除一个外键,而且我也不在乎SQL表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.