Comment éviter de créer une nouvelle ligne si une ligne similaire existe?

J'ai besoin de configurer hibernate pour éviter de créer des doublons de lignes, (bien que la ligne existe, il en crée une nouvelle, et depuis un seul déposée, il est mis tout le reste à NULL)

Permet de dire que j'ai une ligne comme suit

id des    index age
1  MyName 2     23

Bien que je viens de mettre en Monnom comme des et il existe déjà dans le Nom de la table hibernate
créer une nouvelle ligne comme suit

id des    index age
1  MyName 2     23
2  MyName Null  Null     << new row with null values will be created 
                            rather than updating the previous one

Quand je veux sa
.
J'ai donc ajouté l'annotation suivante à ma classe, mais la traversée de l'Entité, et dynamicUpdate.

@org.hibernate.annotations.Entity(
  dynamicUpdate = true
)

J'ai utilisé @DynamicUpdate ainsi, bien que hibernate de l'accepter, mais j'ai toujours le même problème.

Est-il une autre méthode pour le faire ? La Version de mon hibernation est comme suivant

<dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>4.2.1.Final</version>
      <type>jar</type>
</dependency>

*Basé sur le commentaire de Ray par soufflait, Par l'attribution d'une valeur d'Id de classe enfant qu'il fonctionne correctement, mais que diriez-vous si je n'ai pas la carte d'identité? dois-je faire un select pour trouver l'id d'abord ? Existe t'il une méthode pour forcer hibernate pour le faire automatiquement r basé sur les valeurs de la classe enfant rahter que de faire une sélection distincte pour trouver l'id? *

User.Java

....
import org.hibernate.annotations.DynamicUpdate;

@Entity
@Table(name = "user") 
@DynamicUpdate
public class User implements Serializable {

  private int ID;
  private Name name;
  private String type;

  public User() {
  }

  @Id
  @GeneratedValue
  @Column(name = "id")
  public int getID() {
     return ID;
  }

  public void setID(int ID) {
     this.ID = ID;
  }

  @ManyToOne(cascade = CascadeType.ALL)
  public Name getName() {
     return name;
  }

  public void setName(Name name) {
    this.name = name;
  }

  .....

Name.Java

@Entity()
@Table(name = "Name")
public class Name implements Serializable {

private int id;
private String des;
private String index;
private String age;

public Name() {
}

@Id
@GeneratedValue
@Column(name="id", unique= true, nullable = false)
public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

.....

Model.java

public void addMyUsers(){
   Name name = new Name();
   name.setDes("MyName");
   While( ..... )
   {
       User user = new User();
       user.setName(name);
       user.setType(X);
       addUser(user);
   }
}

public void addUser(User user) {
        session = Util.getSession();

        session.beginTransaction();


        session.merge(user); 
        //session.saveOrUpdate(user);

        session.getTransaction().commit();

        session.close();
}

source d'informationauteur