Hibernate ManyToMany

6 respostas
V

como faco para adicionar mais campos alem das chaves primarias com annotations??

@ManyToMany( //Relacionamento de muito para muitos.
				
			cascade={CascadeType.PERSIST, CascadeType.MERGE}
	)
	@JoinTable(
			name="DEVEDOR",
			joinColumns={@JoinColumn(name="CLIENTEFK_ID"),			
						@JoinColumn(name="DEVEDOR_CIDADE")},											
			inverseJoinColumns=@JoinColumn(name="EMPRESTIMOFK_ID"),

			uniqueConstraints=@UniqueConstraint(columnNames={"CLIENTEFK_ID", "EMPRESTIMOFK_ID"})

entao…tenho tabela cliente e emprestimo…e a relacao entre elas gera devedor…criando normal ja consegui, mas eu quero q na tabela tenha clienteFK. emprestimoFK, cidade do cliente.

6 Respostas

antoniopopete

Veja
Esse link me ajudou bastante, mas você precisa declarar uma nova classe onde vai mapear com uma classe de relacionamento e colocar lá um objeto com um tipo A e outro do tipo B, no seu relacionamento AB e lá você mapeia os novos atributos.
Dá uma lida no tutorial que ele explica muito melhor do que eu.
Veja ess post também: http://www.guj.com.br/posts/list/44767.java

V

opa vou olhar vlw ae !!

V

entao…eu ja tinha este material porem eles adicionam um terceiro atributo na relacao devedor, com codigo SQL e nao por annotation, estou usando postgre 8.1.4 e minhas tabelas sao geradas a partir das anotacoes. Queria fazer isso atraves da annotations, mas vlw a itencao eu agradeco :smiley:

Alguem sabe como consigo fazer isto, se nao fui claro em minha duvida por favor falem 8)

CintiaDR

Você quer que uma tabela de relacionamento tenha atributos? Isso?

Então tem que fazer uma entidade somente para ela, seguinte o modelo orientado a objetos.

É esse seu problema??

V

tenho duas tabelas: cliente e emprestimo. Quando criado relacionamento N : N, cria se uma nova Tabela chamada
devedor onde ela estara composta pelas chaves primaria de cliente e emprestimo. até ae consegui blza, mas agora eu preciso que a tabela devedor tenha alem clientefk, emprestimofk, adicionar um novo atributo que é cidade do cliente

CREATE TABLE clientes
(
  cliente_id int4 NOT NULL,
  cliente_cidade varchar(150) NOT NULL,
  cliente_nome varchar(100) NOT NULL,
  cliente_rua varchar(150) NOT NULL,
  CONSTRAINT clientes_pkey PRIMARY KEY (cliente_id)
)
CREATE TABLE emprestimos
(
  emprestimo_id int4 NOT NULL,
  emprestimo_total float8 NOT NULL,
  agenciafk_id int4,
  CONSTRAINT emprestimos_pkey PRIMARY KEY (emprestimo_id),
  CONSTRAINT agenciafk_id FOREIGN KEY (agenciafk_id)
      REFERENCES agencias (agencia_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE
)
CREATE TABLE devedor
(
  clientefk_id int4 NOT NULL,
  emprestimofk_id int4 NOT NULL,
  CONSTRAINT devedor_clientefk_id FOREIGN KEY (clientefk_id)
      REFERENCES clientes (cliente_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT devedor_emprestimofk_id FOREIGN KEY (emprestimofk_id)
      REFERENCES emprestimos (emprestimo_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT devedor_clientefk_id_key UNIQUE (clientefk_id, emprestimofk_id)
)

ae esta sql gerado.
quero adicionar a cidade que esta na tabela cliente a tabela do devedor atraves das propias annotations!!
OBS: aquele agencia nao tem nada a ver é de outra relacao.

vlws a itencao!

CintiaDR

Ah, pera, vc quer DUPLICAR a informação? Pra que vc quer isso?? Faz os selects direito hehehe

Criado 30 de abril de 2008
Ultima resposta 30 de abr. de 2008
Respostas 6
Participantes 3