Red de conocimiento informático - Aprendizaje de programación - Clave primaria compuesta y todas las claves externas en jpa, por favor dígame cómo escribir comentarios

Clave primaria compuesta y todas las claves externas en jpa, por favor dígame cómo escribir comentarios

Al diseñar una tabla de base de datos, generalmente se diseña una tabla con una clave primaria compuesta, es decir, por ejemplo:

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) {

this.pk = pk;

}

}