Hola a todos,
Tengo un problema a la hora de generar los scripts de BBDD a partir de unas clases en Eclipse con la JPA Tools configurado con la plataforma "EclipseLink 2.5.x".
- Estas son las clases.
@Entity
@Table(name="UNI")
public class Uni implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@Column(name="IDUNI", unique=true, nullable=false, precision=5)
private long iduni;
@Temporal(TemporalType.DATE)
@Column(name="DATAINI", nullable=true)
private Date dataini;
@OneToMany(mappedBy="uni")
private Set<UniHis> uniHis;
}
@Entity
@Table(name="UNI_HIS")
public class UniHis implements Serializable
{
private static final long serialVersionUID = 1L;
@EmbeddedId
private UniHisId id;
@ManyToOne
@JoinColumns({@JoinColumn(name="IDUNI", referencedColumnName="IDUNI", nullable=false, insertable=false, updatable=false), @JoinColumn(name="DATAINI", referencedColumnName="DATAINI", nullable=false, insertable=false, updatable=false)})
private Uni uni;
}
@Embeddable
public class UniHisId implements Serializable
{
private static final long serialVersionUID = 1L;
@Column(name="IDUNI", unique=true, nullable=false, precision=5)
private long iduni;
@Column(name="DATAINI", nullable=false)
@Temporal(TemporalType.DATE)
private java.util.Date dataini;
}
- Y este es el script de salida:
CREATE TABLE PRUEBA.UNI (IDUNI NUMBER(5) NOT NULL UNIQUE, DATAINI DATE NULL, PRIMARY KEY (IDUNI));
CREATE TABLE PRUEBA.UNI_HIS (IDUNI NUMBER(5) NOT NULL UNIQUE, DATAINICI DATE NOT NULL, PRIMARY KEY (IDUNI, DATAINI));
ALTER TABLE PRUEBA.UNI_HIS ADD CONSTRAINT PK_UNI_HIS FOREIGN KEY (IDUNI) REFERENCES SICUBADM._FER_UNITORG (IDUNI);
Si os fijáis no sale lo que esperaba:
ALTER TABLE PRUEBA.UNI_HIS ADD CONSTRAINT PK_UNI_HIS FOREIGN KEY (IDUNI, DATAINI) REFERENCES SICUBADM._FER_UNITORG (IDUNI, DATAINI);
He hecho pruebas con otros dos campos que no son PK a la tabla UNI y aparecen los dosen la FK. No sé si el problema es al hacer referencia a campo que es PK (IDUNI) y otro que no (DATAINI).
Muchas gracias por cualquier aporte porque no he encontrado nada que pueda solucionarlo.
Saludos.