Hay tres mesas modelados como tres entidades:APP 3 vías unirse a la anotación
@Entity
@Table(name="event")
public class Event {
public Long datetime;
public String name;
public Long processId;
}
@Entity
@Table(name="process")
public class Process {
public Long Id;
public Long sequence;
public Name name;
}
@Entity
@Table(name="operation")
public class Operation {
public Long Id;
public Long datetime;
public Long sequence;
}
Cualquier registro único single del proceso de operación de secuencia se obtiene mediante el SQL que tiene una restricción de 3 vías unirse a:
SELECT *
FROM event e, process p, operation q
WHERE e.processId = p.id
AND e.datetime = q.datetime
AND p.sequence = q.sequence
para poner en práctica que, en JPA, tengo que hacer una lista de las operaciones, que se redujo de forma expresa a un único registro excelentes referencias del p.sequence igualdad JQPL = q.sequence
@Entity
@Table(name="event")
public class Event {
public Long datetime;
public String name;
public Long processId;
@OneToOne
@JoinColumn(
name = "processId", referencedColumnName="id",
insertable=false, updatable=false)
private Process process;
@OneToMany
@JoinColumn(
name = "datetime", referencedColumnName="datetime",
insertable=false, updatable=false)
private List<Operation> operations;
}
Cuando el JPQL especifica la tercera transitiva se unen restricción:
SELECT e FROM Event e
INNER JOIN FETCH e.process p
INNER JOIN FETCH e.operations q
WHERE p.sequence = q.sequence
Sin embargo, quiero que las tres limitaciones a ser modelados dentro de la entidad POJO. ¿No debería haber forma de utilizar solo las anotaciones JPA para unir en tres? A medida que la entidad pseudocódigo siguiente ilustra:
@Entity
@Table(name="event")
public class Event {
public Long datetime;
public String name;
public Long processId;
@OneToOne
@JoinColumn(
name = "processId", referencedColumnName="id",
insertable=false, updatable=false)
private Process process;
@OneToOne
@JoinColumn(
name = "datetime", referencedColumnName="datetime",
insertable=false, updatable=false)
@JoinColumn(
name = "process.sequence", referencedColumnName="sequence",
insertable=false, updatable=false)
private Operation operations;
}
Así que no sería necesario especificar transitiva unirse a la restricción en el JPQL
SELECT e FROM Event e
INNER JOIN FETCH e.process p
INNER JOIN FETCH e.operations q
¿Cómo modelar una transitiva Registro mediante anotaciones JPA?
Por cierto, me han dejado fuera las anotaciones JAXB. Event debe ser absolutamente la etiqueta raíz XML. Por lo tanto, la entidad que se está modelando utiliza el evento POJO. La entidad Evento se usa directamente como XML DTO thro JAXB. Es decir, no debe sugerir que use otro POJO como raíz. –
No estoy 100% seguro de cuál es su problema ... si especifica la cláusula ON de las uniones, ¿no resuelve su problema? – slambeth