Java/Hibernate:非空属性引用空值或瞬态值

为了简单起见,事件具有地址,许多事件可以共享相同的地址。所以我有一个ManyToOne关系。Java/Hibernate:非空属性引用空值或瞬态值

活动类(我删除了可读性不相关的代码)

@Entity 

@Table(name = "events")

public class Event {

private Address address;

@ManyToOne(cascade = CascadeType.ALL)

@JoinColumn(name = "address_id", nullable = false)

public Address getAddress() {

return this.address;

}

}

地址类

@Entity 

@Table(name = "adresses")

public class Address {

private Set<Event> events = new HashSet<Event>(0);

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

public Set<Event> getEvents() {

return this.events;

}

}

当我取ID为6的事件,并尝试将其删除:

Event e = session.get(Event.class, 6); 

session.delete(e);

我得到的错误not-null property references a null or transient value : logic.Event.address

但由于地址不初始化它既不瞬态因为我从数据库中检索它,也没有空:

Event e = session.get(Event.class, 6); 

System.out.println(e.getAddress().getAddressId()); //Output is 3, which is correct

我不知道为什么发生这种情况,大多数人同样的问题试图保存一个暂时的对象,这根本不是我的情况。

回答:

拆卸cascade注解我所有的@ManyToOne侧实体解决我的问题。如果有人有解释,请随时评论!

以上是 Java/Hibernate:非空属性引用空值或瞬态值 的全部内容, 来源链接: utcz.com/qa/258596.html

回到顶部