Je veux juste savoir comment il est possible de créer un objet après avoir créé votre base de données avec les annotations Hibernate?Enregistrer l'objet avec les annotations Hibernate?
Lorsque j'exécute le code ci-dessous, il crée la base de données avec les objets, mais quand je cours la deuxième fois, il crée exactement la même chose, et aucun nouvel objet n'est ajouté? Comment venir? Comment puis-je créer des objets en utilisant des annotations avec la méthode .save, après avoir créé la base de données avec des annotations? Ou n'est-il pas possible de le faire avec des annotations?
Merci d'avance.
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
Adress adress = new Adress("Streetname", "postcode");
Person person1 = new Person("Peter Hanks", adress);
Person person2 = new Person("Sophie Hanks", adress);
session.save(person1);
session.save(person2);
transaction.commit();
} catch (HibernateException e) {
transaction.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
Heres le code person.class
@Entity
@Table(name="person")
public class Person implements Serializable {
private long id;
private String navn;
private Adresse adresse;
public Person() {
}
public Person(String navn, Adresse adresse) {
this.navn = navn;
this.adresse = adresse;
}
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name= "adresse_id", nullable = false)
public Adresse getAdresse() {
return adresse;
}
public void setAdresse(Adresse adresse) {
this.adresse = adresse;
}
@Id
@GeneratedValue
@Column(name= "id")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column(name = "navn", nullable= false, length= 100)
public String getNavn() {
return navn;
}
public void setNavn(String navn) {
this.navn = navn;
}
@Override
public int hashCode() {
int hash = 3;
hash = 29 * hash + (this.navn != null ? this.navn.hashCode() : 0);
hash = 29 * hash + (this.adresse != null ? this.adresse.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Person other = (Person) obj;
if ((this.navn == null) ? (other.navn != null) : !this.navn.equals(other.navn)) {
return false;
}
if (this.adresse != other.adresse && (this.adresse == null || !this.adresse.equals(other.adresse))) {
return false;
}
return true;
}
Je ne l'obtenir .. J'utilise @GeneratedValue, donc il ne devrait pas être un problème . La base de données compte l'ID, donc il ne peut pas être les mêmes objets ?? – Omer
Entre la première et la deuxième fois, remplacez "Peter" par "Paul" et "Sophie" par "Sarah". Avez-vous plus d'objets maintenant? – millhouse
non, en cours d'exécution deuxième fois les premiers objets se trouve toujours dans la base de données .. les secondes ajoutées ne sont pas enregistrées ??? Je viens d'ajouter le code pour person.class – Omer