Annotation para este tipo de relacionamento

2 respostas
R

Pessoal, estou aprendendo Hibernate e estou com bastante dificuldade em definir um determinado tipo de relacionamento.

Classe PersonDO:

@Entity
public class PersonDO implements Serializable {
  protected Long id;
  protected String name;

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  public Long getId() {
    return id;
  }

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

  ...

}

Classe RelationshipDO:

@Entity
public class RelationshipDO implements Serializable {
  private Long id;
  private PersonDO from;
  private PersonDO to;
  private RelationshipType type;
  private String description;

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  public Long getId() {
    return id;
  }

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

  @Enumerated(EnumType.STRING)
    public RelationshipType getType() {
      return type;
   }

  public void setType(RelationshipType type) {
    this.type = type;
  }

  ...
}

RelationshipType:

public enum RelationshipType {
	PARTNER,
	CLIENT,
  ...
}

Situação:
A classe RelationshipDO é responsável por permitir que um PersonDO se relacione com outro PersonDO. O tipo do relacionamento será classificado com o enum RelationshipType.
Um PersonDO pode se relacionar com outro PersonDO diversas vezes e de diferentes formas (com diferentes RelationshipType classificando a relação).
A minha grande dúvida é como eu consigo definir via annotation que um PersonDO tem muitos relacionamentos? Em RelationshipDO como fica a annotation para permitir isso? O que mais complica minha vida é resolver a questão do PersonDO to e do PersonDO from presentes em RelationshipDO.

Não sei se fui muito claro.

2 Respostas

71C4700

Rapaz ! É o seguinte acho que
ficaria mais ou menos assin

private Set<RelationshipType> type; // E no get @OneToMany public Set<RelationshipType> getType(){...}
Mas isso não resolve teu problema não, mas é um caminho a ser seguido.
Dá uma procurada sobre este relacionamento. Acho que assim resolveria teu problema

71C4700

Sim da uma olhada nesta enumeração acho que deveria ficar

Tudo por conta de um construtor, mas não tenho certeza !!
uma Dica só !!!

Criado 22 de julho de 2008
Ultima resposta 22 de jul. de 2008
Respostas 2
Participantes 2