Clave primaria compuesta y todas las claves externas en jpa, por favor dígame cómo escribir comentarios
Tabla
Código SQL
CREATE TABLE TB_HOUR_DATA
p>
(
FECHA STAT_DATE NO NULL,
NÚMERO PATH_ID(20) NO NULL,
VALOR VARCHAR2( 512 BYTE),
NÚMERO DE TIPO(1) NO NULO
)
La clave principal compuesta es (STAT_DATE PATH_ID, TYPE)
Para este caso, la declaración de mapeo de anotaciones de hibernación (jpa) es la siguiente:
1. Clase de clave primaria compuesta HourDataPK
Código Java
Paquete net.kong .wolf.stat.db.entity ;
importar java.io.Serializable
importar java.util.Date
importar javax.persistence.Column; ;
importar javax.Persistence.Embeddable;
importar javax.Persistence.TYPE
2.
importar javax.Persistence. Incrustable
importar javax.Persistence.JoinColumn;
importar javax.Persistence.ManyToOne
importar javax.Persistence.Temporal; >importar javax.Persistence.Timporal
importar javax.Persistence.Temporal
importar javax.Persistence.Temporal tipo
@Embeddable
clase pública HourDataPK implementa Serializable {
/** *//**
*
*/
privado estático final largo serialVersionUID = 1L;
@ManyToOne
@JoinColumn( nombre = "path_id", nullable = false)
ruta de acceso privada
@Column(nombre = "stat_date ")
@Temporal(TemporalType.DATE)
fecha privada statDate
tipo int privado
ruta pública getPath() {
ruta de retorno
}
public void setPath(Ruta ruta) {
this.path = ruta
}
fecha pública getStatDate() {
retorno; statDate;
}
public void setStatDate(Fecha statDate) {
this.statDate = statDate;
public int getType() {
tipo de retorno;
}
public void setType(int tipo) {
esto .type = tipo;
}
}
2. Clase de entidad HourData:
Código Java
paquete net.kong.wolf.stat.db.entity
importar java.io.Serializable
importar javax.persistence.EmbeddedId
importar javax; .persistence.Entity;
importar javax.persistence.Table;
importar net.kong.wolf.stat.core.Text
3.
p>p>
@Entity
@Table(name = "TB_HOUR_DATA")
clase pública HourData implementa Serializable {
/* * *//* *
*
*/
serialVersionUID largo estático privado = 1L
@EmbeddedId
pk privado HourDataPK;
valor de cadena privada
cadena pública getValue() {
valor de retorno;
public void setValue(Valor de cadena) {
this.value = value
}
public int[] getHours(); {
return parseValue(valor);
}
private int[] parseValue(valor de cadena) {
int[] resultado = nuevo int[24 ];
for (int i = 0; i lt; 24; i) {
resultado[i] = -1; > }
if (valor == null) {
devolver resultado
}
if (valu)
e == null) {
Devuelve el resultado.
String[] hs = Text.splitCSV(value);
int len = Math.min(24, hs.length); (int i = 0; i lt; len; i) {
resultado[i] = Text.parseInt(hs[i], -1
}
devuelve el resultado.
Devolver resultado;
}
public void setHours( int[] horas) {
int[] tHours = parseValue(valor
StringBuilder sb = new StringBuilder();
int len = Math.min(24, horas.longitud
for (int); i = 0; i lt; i ) {
sb.append(horas[i] lt; 0 ? tHoras[i] : horas[i]).append(','); /p >
}
sb.deleteCharAt(sb.length() - 1
this.value = sb.toString(); > }
public HourDataPK getPk() {
return pk
}
public void setPk(HourDataPK pk) { p>
this.pk = pk;
}
}