Buenas,
@Entity
@Table(name = "device_models")
public class DeviceModel extends TrackedEntity {
private static final long serialVersionUID = -4632619367837084959L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonView({Views.Entity.class})
@Column(name = "id")
private Long id;
@Column(name = "name")
@NotNull(message = "deviceModel.name.required")
@JsonView({
Views.Entity.class,
AuthorizationViews.Entity.class,
DeviceKeyViews.Entity.class,
PromontKeyCryptView.Encrypt.class
})
private String name;
@Column(name = "version")
@JsonView({
Views.Entity.class,
AuthorizationViews.Entity.class,
DeviceKeyViews.Entity.class,
PromontKeyCryptView.Encrypt.class})
private String version;
@Column(name = "description")
@JsonView({Views.Entity.class, DeviceKeyViews.Entity.class})
private String description;
@Enumerated(EnumType.ORDINAL)
@JsonView({Views.Entity.class, DeviceKeyViews.Entity.class})
private StatusEnum status;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "device_model_id")
@OrderBy("number")
@JsonView({Views.EntityWithRelations.class})
private Set<DevicePort> devicePorts;
.....get, set....
}
Classe filha:
@Entity
@Table(name = "device_ports")
public class DevicePort extends TrackedEntity {
@EmbeddedId
@JsonUnwrapped
private DevicePortID devicePortID;
@MapsId("deviceModelId")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "device_model_id", referencedColumnName = "id")
@JsonView({DeviceKeyViews.EntityWithRelations.class})
private DeviceModel deviceModel;
@Enumerated(EnumType.STRING)
@JsonView({Views.Entity.class})
@NotNull(message = "devicePort.signal.required")
@Column(name = "signal")
private SignalEnum signal;
@JsonView({Views.Entity.class})
private StatusEnum status;
....get, set...
}
PK:
@Embeddable
public class DevicePortID implements Serializable {
@Column(name = "device_model_id")
private Long deviceModelId;
@Column(name = "number")
private Integer number;
....get, set....
}
O problema consiste que estou tentando salvar um DeviceModel com suas DevicePorts. Assim quem determina e é dono do relacionamento é DeviceModel.
Só que ai esta a questão, não consigo salvar a DevicePort através de um save(DeviceModel).
ocorre este erro
org.hibernate.id.IdentifierGenerationException: attempted to assign id from null one-to-one property
Alguma ideia? De como posso fazer…