0
我有兩個實體與OneToOne關係:可空OneToOne關係真實關係,使用主鍵
@Entity
@Table(name = "APPLICATION_DEVICE")
public class ApplicationDevice implements Serializable {
[...]
@Id
public ApplicationDeviceKey getApplicationDeviceKey()
{
return applicationDeviceKey;
}
@NotFound(action = NotFoundAction.IGNORE)
@OneToOne(cascade=CascadeType.ALL)
@JoinColumns({
@JoinColumn(name = "applicationId", referencedColumnName = "applicationId",insertable=false,updatable=false, nullable = true),
@JoinColumn(name = "deviceId", referencedColumnName = "deviceId",insertable=false,updatable=false, nullable = true), }
)
public ApplicationDevicePushInfo getDevicePushInfo() {
return devicePushInfo;
}
和其他實體:
@Entity
@Table(name = "APPLICATION_DEVICE_PUSHINFO")
public class ApplicationDevicePushInfo implements Serializable {
[...]
@Id
public ApplicationDeviceKey getApplicationDeviceKey()
{
return applicationDeviceKey;
}
@OneToOne
@JoinColumns({
@JoinColumn(name = "applicationId", referencedColumnName = "applicationId",insertable=false,updatable=false, nullable = false),
@JoinColumn(name = "deviceId", referencedColumnName = "deviceId",insertable=false,updatable=false, nullable = false)}
)
public ApplicationDevice getApplicationDevice() {
return applicationDevice;
}
第二實體可以是空的,當我嘗試保存我的第一個實體,我得到一個:
Cannot add or update a child row: a foreign key constraint fails (`malcom_dev`.`application_device`, CONSTRAINT `FK16A0C0451DC7C799` FOREIGN KEY (`applicationId`, `deviceId`) REFERENCES `APPLICATION_DEVICE_PUSHINFO` (`applicationId`, `deviceId`))
默認爲空的是真實的,所以我想這將是可能的這種關係。
還有另一種方法可以讓具有oneToOne關係的實體不創建新的列或表,並允許第二個實體爲空?