1. @OneToMany (Uni Direction):
Parent:
@Entity
@Table(name = "POLICY")
@SequenceGenerator(name = "SEQ_POLICY", sequenceName = "SEQ_POLICY", allocationSize = 1)
public class Policy implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_POLICY")
@Column(name = "POLICY_ID")
private BigDecimal policyID;
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name = "POLICY_ID")
private List<Carrier> carriers = new ArrayList<>();
...
}
Child: (Having composite Primary key)
@Entity
@Table(name = "CARRIER")
public class Carrier implements Serializable{
@EmbeddedId
private CarrierPK carrierPK;
...getters and setters
}
Child Primary key:
@Embeddable
public class CarrierPK implements Serializable{
@Column(name="POLICY_ID")
private BigDecimal policyId;
@Column(name="TYPE_ID")
private BigDecimal typeId;
@Column(name="S_NUMBER")
private BigDecimal sNumber;
// getters and setter
// hashcode and equals
}
Код Dao: часть метода сохранения
public class Bo{
public void savePolicy(){
List<Carrier> carriers = new ArrayList<>();
for(CarrierVo c:carriersList) //CarrierVo pojo from ui
{
// to copy properties form pojo to entity
Carrier cEntity = somecalss.method(c)
CarrierPK cPK = new CarrierPK();
cPK.setSNumber(c.getSNumber());
cPK.setTypeId(c.getTypeId());
cEntity.setCarriersPK(cPK);
carriers .add(cEntity);
}
policyEntity.setCarriers(carriers );
em.persist(policyEntity);
}
}
Когда я сохраняюсь, я получаю следующую ошибку: Причина: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: невозможно вставитьNULL into ("PROJECT". "CARRIER". "POLICY_ID")
Я пытался с двунаправленным отображением @OneToMany, также получал ту же ошибку.