J'ai deux tables dans la base de données mssql des clients. La première est une table de travail - j'ai donc créé une entité de travail qui contient le type de charge et le poids de la charge, et tout cela fonctionne bien.Hibernate MS SQL Join issue
Mon problème maintenant est qu'il y a une deuxième table qui inclut des informations sur le point de chargement et de déchargement. La deuxième table, que j'appelle JEP, a une clé primaire composée de plusieurs éléments: le type (charger ou décharger), le code postal et le numéro de client.
J'ai créé une entité JobEndPoint et NetBeans a également créé un objet représentant la clé primaire JobEndPointPK contenant tous ces champs.
Je souhaite ajouter deux JobEndPoint (loadPoint et unloadPoint) à mon entité Job. Mon problème est maintenant: comment puis-je annoter cela dans Hibernate? À mon avis, il s'agit d'un navire de relation @OneToOne. Il serait parfait si je pouvais spécifier une instruction SELECT comme SELECT * FROM JEP WHERE type="load" AND customer_nr="123" AND zip_code="123
... ". Est-ce possible avec Hibernate?
Merci pour votre aide!
Regeards,
Marco
Voici les entités:
@Entity
@Table(name = "Auftragsdaten", catalog = "...", schema = "dbo")
public class Job implements Comparable<Object>, Serializable {
private static final long serialVersionUID = 4285871251915951149L;
@Id
@Basic(optional = false)
@Column(name = "`id`", nullable = false)
int id;
@Column(name = "`AufNr`", nullable=false)
int jobId;
@Transient
List<Integer> jobsAdded;
@Column(name = "`Beladedatum`", nullable=false)
@Temporal(TemporalType.DATE)
Date loadDate;
@Column(name = "`Beladezeit`")
@Temporal(TemporalType.TIME)
Date loadTimeFrom;
@Transient
Date loadTimeTo;
@Column(name = "`Entladedatum`", nullable=false)
@Temporal(TemporalType.DATE)
Date unloadDate;
@Column(name = "`Entladezeit Beginn`")
@Temporal(TemporalType.TIME)
Date unloadTimeFrom;
@Column(name = "`Entladezeit Ende`")
@Temporal(TemporalType.TIME)
Date unloadTimeTo;
@Transient
List<JobEndPoint> froms;
@OneToOne
@JoinColumns ({
@JoinColumn(name="`Beladetyp`", referencedColumnName = "`Ladetyp`", insertable = false, updatable = false),
@JoinColumn(name="`AbsNr`", referencedColumnName = "`KundenNr`", insertable = false, updatable = false),
@JoinColumn(name="`Verkehrsart`", referencedColumnName = "`VerkArt`", insertable = false, updatable = false),
@JoinColumn(name="`von LKZ`", referencedColumnName = "`LKZ`", insertable = false, updatable = false),
@JoinColumn(name="`von PLZ`", referencedColumnName = "`PLZ`", insertable = false, updatable = false)
})
JobEndPoint fromPoint;
@Transient
JobEndPoint toPoint;
@Column(name = "`Verkehrsart`", length = 10, nullable=false)
@Enumerated
JobType type;
@Column(name = "`Anzahl Paletten CCG1`")
int numberCCG1;
@Column(name = "`Anzahl Paletten CCG2`")
int numberCCG2;
@Transient
int numberFullContainer;
@Transient
int numberEmptyContainer;
@Column(name = "`Anzahl Container`")
int numberContainer;
@Column(name = "`Anz Stellplätze`")
int numberUnits;
@Column(name = "`Bruttogewicht`", nullable=false)
int loadWeight;
@ManyToOne
@JoinColumn(name="`Kühlkennzeichen`")
CoolingCode coolingCode;
}
@Entity
@Table(name = "BES", catalog = "...", schema = "dbo")
public class JobEndPoint implements Serializable {
private static final long serialVersionUID = 1017986852824783744L;
@Id
protected JobEndPointPK jobEndPointPK;
(...)
}
@Embeddable
public class JobEndPointPK implements Serializable {
@Basic(optional = false)
@Column(name = "`Ladetyp`", nullable = false, length = 50)
@Enumerated
EndPointType type;
@Basic(optional = false)
@Column(name = "`KundenNr`", nullable = false)
int customerId;
@Basic(optional = false)
@Column(name = "`VerkArt`", nullable = false, length = 10)
@Enumerated
JobType jobType;
@Basic(optional = false)
@Column(name = "`LKZ`", nullable = false, length = 3)
String countryCode;
@Basic(optional = false)
@Column(name = "`PLZ`", nullable = false, length = 7)
String zipCode;
}
Merci! Cela ressemble à un début. Est-il correct que j'ai le JobEndPointPK dans l'objet Tâche bien que je veux l'objet JobEndPoint? Ou dans l'autre sens: comment obtenir l'objet JobEndPoint avec JobEndPointPK stocké dans le Job lors de l'exécution? –
@Marco Damn, je l'ai foiré :-(Maintenant j'ai mis à jour le code.J'ai également lié un meilleur exemple –
@Marco Rien d'évident ... pourriez-vous poster votre dernier code? –