Hibernate annotation sem @id

6 respostas
macspace

Olá senhores,
tenho duas tabelas usuario e usuarioacesso, a usuarioacesso possui uma chave estrangeira para a tabela usuario e não possui uma PK, fiz do jeito abaixo e fica dando o erro:

org.hibernate.AnnotationException: No identifier specified for entity: br.com.visaoti.estacaotim.model.cadastro.seguranca.UsuarioAcessoBean

mapeamento da usuario:

@Entity
@Table(name="usuario")
@SequenceGenerator(name = "seqUsuario", sequenceName = "seq_usuario")
public class UsuarioBean {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "seqUsuario")
	@Column(name="id")
	private Integer id;
	
	@Column(name="usr_login")
	private String login;
	
	@Column(name="usr_senha")
	private String senha;
	
	@Column(name="usr_ativo")
	private Boolean ativo;
	
        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
        @JoinColumn(name="usr_codigo")
	public Set<UsuarioAcessoBean> acessos;

        //gets e sets
}

mapeamento usuarioacesso:

@Entity
@Table(name="usuarioacesso")
public class UsuarioAcessoBean {
	@ManyToOne
	@JoinColumn(name="usr_codigo", referencedColumnName="id")
	private UsuarioBean usuario = new UsuarioBean();
	
	@Column(name="usa_acesso")
	private String acesso;

        //gets e sets
}

[]'s

Márcio

6 Respostas

G

Você não pode criar uma entity sem um identificador. Aliás criar uma tabela sem uma PK é gambiarra.

jayro

Recomendo que cria a chave estrangeira na tabela. Evitará problemas futuros e ficará mais formal.

J

A não ser que seja uma associativa, onde o PK são as FKs.

Mas no caso em questão, use um Id

jayro

A não ser que seja uma associativa, onde o PK são as FKs.

Mas no caso em questão, use um Id

Mesmo sendo associativa deverá ter uma primary key. Boas práticas na cabeça !

G

A não ser que seja uma associativa, onde o PK são as FKs.

Mas no caso em questão, use um Id

Mas nesse caso as duas FK formam uma PK. Então você tem uma composite-key, que obviamente é uma PK :).

J

A não ser que seja uma associativa, onde o PK são as FKs.

Mas no caso em questão, use um Id

Mas nesse caso as duas FK formam uma PK. Então você tem uma composite-key, que obviamente é uma PK :).

Foi o que eu quis dizer, mas vc explicou bem melhor

Criado 28 de setembro de 2009
Ultima resposta 28 de set. de 2009
Respostas 6
Participantes 4