Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Dropwizard Hibernate 1.0.0_Java_Hibernate_Dropwizard - Fatal编程技术网

Java Dropwizard Hibernate 1.0.0

Java Dropwizard Hibernate 1.0.0,java,hibernate,dropwizard,Java,Hibernate,Dropwizard,我遇到了一个问题,即一对多关系之间的双向映射,其中多个关系没有更新其外键-在执行更新/创建时,它仍然为空。有两个实体,第一个(多个)是: 第二个是: @Entity @Table(name = "PERSON") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "discriminator", discriminatorType = DiscriminatorType.STRING

我遇到了一个问题,即一对多关系之间的双向映射,其中多个关系没有更新其外键-在执行更新/创建时,它仍然为空。有两个实体,第一个(多个)是:

第二个是:

@Entity
@Table(name = "PERSON")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "discriminator", discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue(value = "P")
public abstract class Person implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Long id;

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "person")
private Collection<Availability> availabilities;
此时员工没有id。可用性设置为Person(也没有id)

在引擎盖下,这只是调用以下命令:

public Staff update(Staff staff) {
    return persist(staff);
}
protected E persist(E entity) throws HibernateException {
    currentSession().saveOrUpdate(requireNonNull(entity));
    return entity;
}

我是否应该使用会话管理器打开一个新事务,持久化person,取回id,将其设置为availability,然后使用修改后的availability对person执行更新?在我看来,这似乎是错误的。

问题在于,这并不是一种真正的双向关系,而且Person从未被设置为可用性-因此外键为空

我把它改成了单向的

论个人、阶级

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "person_availability")
private List<Availability> availabilities;
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name=“人员可用性”)
私有列表可用性;
然后在Availability.class I上删除了双向引用,即删除了个人价值引用

所需的另一个更改是使用级联类型设置事务策略


字段注释策略不是这里的问题。

问题在于它不是真正的双向关系,并且Person从未设置为可用性-因此外键为空

我把它改成了单向的

论个人、阶级

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "person_availability")
private List<Availability> availabilities;
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name=“人员可用性”)
私有列表可用性;
然后在Availability.class I上删除了双向引用,即删除了个人价值引用

所需的另一个更改是使用级联类型设置事务策略

字段注释策略不是这里的问题