Je rencontre beaucoup de difficultés à faire fonctionner mon fichier de mappage avec une collection d'éléments via une clé étrangère dans Hibernate. Java essaiera de charger ces fichiers ci-dessous et n'aura aucune exception d'exécution, mais la table des événements n'est jamais chargée en tant qu'objet d'un employé (elle restera nulle, mais tous les autres attributs seront chargés depuis la base de données). Dans ma base de données MySQL, je donne les résultats suivants:Aide pour le mappage des clés étrangères de la collection Hibernate
TABLE: Les employés
clé primaire: nom d'utilisateur varchar
Nom varchar
coderégion ENTIER
téléphone ENTIER
addressNumber ENTIER
addressLocation varchar
email varchar
TABLEAU: Événements
clé primaire: ID ENTIER
startDate DateTime
endDate DateTime
customerName varchar
em ployeeUsername varchar
<?xml version="1.0"?>
<class name="Employee" table="Employees">
<id name="username" column="username" type="string"/>
<many-to-one name="contact" class="Contact" column="username" unique="false" update="false" insert="false" optimistic-lock="true" not-found="exception" embed-xml="true" />
</class>
<class name="Contact" table="Employees">
<id name="username" column="username" type="string"/>
<property name="name" column="name" type="string"/>
<property name="addressNumber" column="addressNumber" type="int"/>
<property name="areacode" column="areacode" type="int"/>
<property name="phone" column="phone" type="int"/>
<property name="addressLocation" column="addressLocation" type="string"/>
<property name="email" column="email" type="string"/>
</class>
<?xml version="1.0"?>
<class name="Event" table="Events">
<id name="ID" column="ID" type="int">
<generator class="assigned"/>
</id>
<property name="startDate" column="startDate" type="date"/>
<property name="endDate" column="endDate" type="date"/>
<property name="customerName" column="customerName" type="string"/>
</class>
<class name="Employee" table="Events" entity-name="Employee2">
<id name="username" column="employeeUsername" type="string"/>
<list name="events" cascade="all">
<key column="employeeUsername"/>
<list-index column="ID"/>
<one-to-many class="Event"/>
</list>
</class>
Assumer le fichier hibernate.cfg.xml existe et fonctionne (Si vous pensez que cela doit être montré, s'il vous plaît laissez-moi savoir). Il inclut les deux fichiers dans la partie de ses fichiers de mapping.
J'ai l'impression que mon erreur est probablement dans ma déclaration de la collection d'événements dans ma déclaration "list". Voici les classes Java:
package org.hibernate.employee;
import java.util.Rendez-vous amoureux; Public class { private int ID; privé Date startDate; privé Date endDate; private String customerName;
public Event(){
System.out.println("blah");
}
/**
* @return the iD
*/
public int getID() {
return ID;
}
/**
* @param id the iD to set
*/
public void setID(int id) {
ID = id;
}
/**
* @return the startDate
*/
public Date getStartDate() {
return startDate;
}
/**
* @param startDate the startDate to set
*/
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
/**
* @return the endDate
*/
public Date getEndDate() {
return endDate;
}
/**
* @param endDate the endDate to set
*/
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
/**
* @return the customerName
*/
public String getCustomerName() {
return customerName;
}
/**
* @param customerName the customerName to set
*/
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
}
/*
* Fichier: Contact.java */
package org.hibernate.employee;
/** * Cette classe représente les coordonnées d'un employé. * */ public class Contact {
private int username; // the contact identifier in the database
private int areacode; // the contact areacode
private int phone; // the contact phone
private String name; // the contact's name
private int addressNumber; // the contact's address number
private String addressLocation; // the contact's address location
private String email; // the contact's email
/**
* Constructs a Contact object.
*/
public Contact() {
}
/**
* @return the areacode
*/
public int getAreacode() {
return areacode;
}
/**
* @param areacode the areacode to set
*/
public void setAreacode(int areacode) {
this.areacode = areacode;
}
/**
* @return the phone
*/
public int getPhone() {
return phone;
}
/**
* @param phone the phone to set
*/
public void setPhone(int phone) {
this.phone = phone;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the addressNumber
*/
public int getAddressNumber() {
return addressNumber;
}
/**
* @param addressNumber the addressNumber to set
*/
public void setAddressNumber(int addressNumber) {
this.addressNumber = addressNumber;
}
/**
* @return the addressLocation
*/
public String getAddressLocation() {
return addressLocation;
}
/**
* @param addressLocation the addressLocation to set
*/
public void setAddressLocation(String addressLocation) {
this.addressLocation = addressLocation;
}
/**
* @return the email
*/
public String getEmail() {
return email;
}
/**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
}
public String toString(){
String retVal = "";
retVal += "Address: " + this.addressNumber + " " + this.addressLocation + "\n";
retVal += "Email: " + this.email + "\n";
retVal += "Phone: " + this.areacode + " " + this.phone + "\n";
retVal += "Name: " + this.name + "\n";
return retVal;
}
public void setUsername(int username) {
this.username = username;
}
public int getUsername() {
return username;
}
}
/*
* Fichier: Employee.java */
package org.hibernate.employee; import java.util.List;
/** * Cette classe représente un employé dans une base de données d'entreprise. * */ public class Employee {
private String username; // the employee's username
private Contact contact; // the employee's contact information
private List events;
/**
* Constructs an Employee object.
*/
public Employee() {
super();
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the contact
*/
public Contact getContact() {
return contact;
}
/**
* @param contact the contact to set
*/
public void setContact(Contact contact) {
this.contact = contact;
}
/**
* @return the events
*/
public List getEvents() {
return events;
}
/**
* @param events the events to set
*/
public void setEvents(List events) {
this.events = events;
}
public String toString(){
String retVal = "";
System.out.println(events);
retVal += "Username: " + username + "\n";
retVal += "Contact: " + contact + "\n";
return retVal;
}
}
Merci beaucoup pour votre aide. – jds2501