Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@Column(name = "ID")
@GeneratedValue
private int addressid;
@OneToOne
@JoinColumn(name = "CITY_ID",nullable = true,insertable=false, updatable=false)
private City city = new City();
@OneToOne
@JoinColumn(name = "DISTRICT_ID",nullable = true,insertable=false, updatable=false)
private District district = new District();
}
你好, 我有一个名为Address的类,我无法使用DISTRICT_ID = null在hibernate中保存此类。
错误是
org.hibernate.TransientObjectException:object引用未保存的瞬态实例 - 在刷新之前保存瞬态实例:form.District
我只是不知道自己错过了什么......
答案 0 :(得分:2)
如果您希望district
为null
,那么它应该是null
,而不是指向新的瞬态实例:
@OneToOne
@JoinColumn(name = "DISTRICT_ID",nullable = true,insertable=false, updatable=false)
private District district = null;
答案 1 :(得分:1)
也许您应该考虑在同一个对象中使用city_id和city_name,如果您希望只读取City和District表,那么您的城市和地区就不会被保留。
答案 2 :(得分:0)
地区是否注明@Entity
?
您可能需要在cascade
上指定@OneToOne
示例:@OneToOne(cascade={CascadeType.PERSIST})
答案 3 :(得分:0)
如果要使用null DISTRICT_ID保存区域,则不能将其用作主键,因此无法使用@Id对其进行注释。您必须为区实体选择不同的ID。