Dúvida modelar classe

Olá pessoal,

Preciso de uma classe para representar CATEGORIAS, onde posso ter apenas UM nível de SUB-CATEGORIAS.

Por exemplo:

[quote]
- Aviões (Categoria)
– Avião Monomotor (Sub-categoria)
– Avião Bimotor (Sub-categoria)
– Avião Turbo-hélices (Sub-categoria)
– Aviões a Jato (Sub-categoria)
– Avião Supersônico (Sub-categoria)

- Automotores (Categoria)
	   -- Carro (Sub-categoria)
	   -- Moto (Sub-categoria)
	   -- Caminhão (Sub-categoria)[/quote]

Aqui vai minha tentativa: [code]@Entity
@Table(name=“categoria”)
public class Categoria implements Serializable {

private static final long serialVersionUID = -8797314167532565648L;

@Id  
@GeneratedValue(strategy=GenerationType.IDENTITY)	
private Long id; 

@Column(name="nome", nullable=false)
private String nome;

@Column(name="descricao", nullable=false)
private String descricao;

@ManyToOne
@JoinColumn(name="subcategoria")
private Categoria subcategoria;

…[/code]
Gradissída!

oi…
bom primeiramente, está acontecendo algum erro qdo vc utiliza essa classe? qual seria sua dúvida? explica melhor aí…

Abraço

Ja tentou:

E como o foxpv, qual o problema???

Ou vc so está interessada em como ficaria a implementação deste seu modelo?!?!?1

Explica melhor por favor.

Oi,

minha dúvida é se a linha @ManyToOne @JoinColumn(name="subcategoria") private Categoria subcategoria; faz isso que eu mostrei nos exemplos.

Obrigada!

Penso que sua implementação está correta sim. Você criou um auto-relacionamento de categoria com categoria.

Não vejo nenhum problema nessa abordagem.

Com a linha: @ManyToOne @JoinColumn(name="subcategoria") private Categoria subcategoria;

eu terei só UM nível de categoria?

Ao meu ver sim.

Vc pode ter e uma list com várias sub-Categorias caso seja necessário.

com o que voce fez voce vai ter uma sub-categoria para cada categoria…

a solução é guardar a referencia para a categoria “pai” e para buscar usar esta como criteria.

@ManyToOne
@JoinColumn(name="categoria")
private Categoria categoriaReal;

E em um select para escolher todas as sub-categorias de uma categoria voce poderia fazer assim

Criteria crit = session.createCriteria(Categoria.class);
crit.add(new Restrictions("categoriaReal", oObjetoDaCategoriaRealAviao);
List<Categoria> subAvioes = crit.list();

[quote=tati.mat.moreira]Com a linha: @ManyToOne @JoinColumn(name="subcategoria") private Categoria subcategoria;

eu terei só UM nível de categoria?

[/quote]

Agora eu entendi o que você quer. Bem… dessa forma não. Você não vai limitar a um nível de subcategoria. Acredito que a nível de modelo para você fazer essa limitação, somente usando duas tabelas distintas: uma para Categoria e outra para Subcategoria.

Espero ter ajudado. Até.