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!
foxpv
Janeiro 8, 2009, 4:22pm
#2
oi…
bom primeiramente, está acontecendo algum erro qdo vc utiliza essa classe? qual seria sua dúvida? explica melhor aí…
Abraço
fernei
Janeiro 8, 2009, 4:29pm
#3
Ja tentou:
Aviõa (Categoria)
– Monomotor (Sub-categoria)
– Bimotor (Sub-categoria)
– Turbo-hélices (Sub-categoria)
– Jato (Sub-categoria)
– Supersônico (Sub-categoria)
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?
fernei
Janeiro 8, 2009, 10:02pm
#7
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é.