Bom, até onde eu aprendi, o conceito de OO difere da estrutural exatamente pelo motivo de existir Entidades com Responsabilidades.
Então, não acho que seja errado colocar métodos de negócio dentro de um Entity, desde que esse método seja realmente pertinente a ele.
Utilizar Business Class pra fazer todo o trabalho, acaba transformando os Entitys em simples VO’s, com a facilidade da persistência.
Claro que tb não vamos exagerar e sair colocando 500 métodos de negócio em um Entity, mais questões como Persistir, atualizar, cancelar e apagar, acho que seja legal sim.
Um outro conceito, se eu tenho uma Entidade chamada Predio, a qual agrega várias salas e apartamentos, pq não colocar um método para atualizar todas as salas dentro da entidade Prédio, ao invés de utilizar uma Business só para isso ?
Agente acaba tendo que instanciar sempre uma Business e uma Entity para fazer o trabalho que resolveríamos apenas com a Entity.
Já utilizei essa arquitetura (se não estou enganado, chamam de Active Record) em alguns projetos, e deram bastante resultado.
Agora, voltando ao problema inicial, tem como injetar o Session dentro do Entity no EJB3 ou terei que usar um bom e velho LookUp ?