繁体   English   中英

Hibernate OneToMany表未更新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM