Bom pessoal, sou novo aqui. E estou com esse erro no titulo: More than one row with the given identifier was found: 60.
No caso o 60, seria o id do cliente.
Possuo uma tabela chamada am_chamadas, onde ficarão todas as chamadas dos clientes.
Só que se um cliente fizer mais de uma chamada, ele dá esse erro. Sendo que o campo id_cliente não é primary key. Como arrumar? Tem algo a ver com relacionamentos?
O código de consulta é: Query consulta = sessao.createQuery("from ChamadaTO chamada");
O que pode ta acontecendo é vc tá dando algum “consulta.uniqueResult()”, esperando que sua consulta retorne apenas um resultado. Mas como tem mais de um, da esse erro que vc apontou.
O que pode ta acontecendo é vc tá dando algum “consulta.uniqueResult()”, esperando que sua consulta retorne apenas um resultado. Mas como tem mais de um, da esse erro que vc apontou.
[]´s [/quote]
Estranho, esse erro está parecendo mais violação de PK mesmo.
[code]@Entity @Table(name=“am_chamada”) @SuppressWarnings(“serial”)
public class ChamadaTO implements Serializable
{ @Id @Column(name=“id”) @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = “seq_am_chamada”) @SequenceGenerator(name=“seq_am_chamada”, sequenceName=“seq_am_chamada”, allocationSize=1)
public Integer id;//id da chamada
@Column(name="id_cidade")
public Integer id_cidade;//cidade destino (id)
@Column(name="destino")
public Integer telefone;//numero tel destino
@Column(name="origem")
public Integer origem;//cidade do plano (nome)
@Column(name="duracao")
public float duracao;//duracao em segundos
@Column(name="datahora")
public Date data;//data e hora da ligacao
@OneToOne
@JoinColumn(name="id_cliente")
public ClienteTO cliente;//id do cliente da ligacao
@Column(name="valor")
public double valor;//calculo da tarifa (de acordo com tipo de aparelho chamado/tipo de ligacao) X (segundos/60)
@Column(name="localidade")
public Integer localidade;// composto por ddi+ddd+numero(de 8 digitos)
public ClienteTO getCliente()
{
return cliente;
}
public void setCliente(ClienteTO cliente)
{
this.cliente = cliente;
}
public Date getData()
{
return data;
}
public void setData(Date data)
{
this.data = data;
}
public Integer getTelefone()
{
return telefone;
}
public void setTelefone(Integer telefone)
{
this.telefone = telefone;
}
public float getDuracao()
{
return duracao;
}
public void setDuracao(float duracao)
{
this.duracao = duracao;
}
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public Integer getLocalidade()
{
return localidade;
}
public void setLocalidade(Integer localidade)
{
this.localidade = localidade;
}
public Integer getOrigem()
{
return origem;
}
public void setOrigem(Integer origem)
{
this.origem = origem;
}
public double getValor()
{
return valor;
}
public void setValor(double valor)
{
this.valor = valor;
}
public Integer getId_cidade()
{
return id_cidade;
}
public void setId_cidade(Integer id_cidade)
{
this.id_cidade = id_cidade;
}
}[/code]
Eu vi aquele tópico, mas não entendo muito bem, a implementação do hashcode e do equals que um usuario postou no tópico. Será que é erro de relacionamento?
select * from <tabela_cliente> where id_cliente = 60;
Se retornar mais que uma linha é problema com a integridade dos dados, nesse caso violou uma PK e consequentemente o hibernate está acusando problema no mapeamento da propriedade