Hibernate OneToMany表未更新

时间:2015-07-26 21:29:51

标签: java hibernate

我有表Animal和OneToMany映射到表EventAnimal:

ID

表EventAnimal看起来像这样

    @OneToMany(mappedBy = "animal")
    public Set<EventAnimal> getEventAnimals() {
        return eventAnimals;
    }

当我向动物添加事件动物并保存动物时,数据库没有更新:

 @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);

我得到的例外是“animal_id”没有默认值,即使我设置了它。

3 个答案:

答案 0 :(得分:0)

您的ID生成策略是什么?您是自己生成ID还是将其留给数据库?如果它将是数据库放置:

@GeneratedValue(strategy=GenerationType.AUTO)

您可能希望将键更新为Integer而不是int,但不要认为这是问题。

此外,如果您想在动物中添加事件并希望保留它,请将映射更新为:

@OneToMany(mappedBy = "animal", cascade = CascadeType.ALL)

答案 1 :(得分:0)

我将table 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);

答案 2 :(得分:0)

我解决了这个问题。这是一个相当愚蠢的错误 - 脚本没有从表中删除一个外键,我也不在乎查看SQL表。