Ich versuche, JPA zum ersten Mal zu arbeiten und verwirren, wie kann ich Elternwerte abrufen.So holen Sie übergeordnete Werte
Hier meine Tabellenstruktur
T1(
id (pk),
name (varchar)
)
T2(
id (pk),
t1_id (fk_t1),
number (int)
)
T3 (
id (pk),
t2_id (fk_t2),
time (datetime)
zone (tinyint),
name (varchar)
)
sind Wenn ich in SQL arbeiten, habe ich diese Abfrage
select * from T3, T2, T1
where T3.time = <given_time>,
and T3.name = <given_name>,
and T3.t2_id = T2.id,
and T2.t1_id = T1.id
Jetzt kann ich diese übertragen, wie auf eine JPA verwenden können. Ich kann die genannte Abfrage verwenden, das ist nicht das Problem. Aber wie soll ich das Objekt strukturieren?
Bisher habe ich diese
@Entity
@Table(name="T3, schema="", catalog="dbname")
public class T3Entity{
private int id;
private DateTime datetime;
private int zone;
private String name;
@Id
@Column(name="id", nullable=false, insertable=true, updatable=true)
//GETTER/SETTERS
@Basic
@Column(name="datetime", nullable=false, insertable=true, updatable=true)
//GETTER/SETTERS
@Basic
@Column(name="zone", nullable=false, insertable=true, updatable=true)
//GETTER/SETTERS
@Basic
@Column(name="name", nullable=false, insertable=true, updatable=true)
//GETTER/SETTERS
}
Hier i bin verwirrt. Soll ich ein weiteres Feld namens T2
(übergeordnetes Feld in jedem Kind) erstellen und dann mit Anmerkungen versehen? wie beschriften? Würde die benutzerdefinierte Abfrage automatisch die Werte dieser Objekte festlegen?
Wie würde ich die Abfrage schreiben? Da ich 'T2Entity' in' T3Entity' habe, kann ich 'T3Entity.id = T2Entity.id' nicht verwenden ?????? –
Sie verwenden JPA-Joins: 'SELECT t1, t2, t3 VON T1Entity t1 JOIN t1.t2 t2 JOIN t2.t3 t3 WHERE t3.time =: Zeit und t3.name =: name', siehe http: //wiki.eclipse .org/EclipseLink/UserGuide/JPA/Basic_JPA_Entwicklung/Abfrage/JPQL # FROM_Clause – wero