Hibernate Annotations - O que pode estar errado nesse mapeamento

3 respostas
D
@Entity(dynamicInsert = true, dynamicUpdate = true)
@Table(name = "person")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person {

	@Id
	@GeneratedValue
	private Long id;

	private String name;
	private boolean active;
	private String cell;
	private String phone;
	private String email;
	private String password;

	@Enumerated(EnumType.STRING)
	private Role role;

	@ManyToOne
	@JoinColumn(name = "address_id", nullable = true)
	private Address address;
Metodo de insert:
Person p = new Person();

p.setEmail("[email removido]');
p.setActive(true);
p.setRole(Role.ADMINISTRADOR);
p.setPassword("12345');

IDao<Person> dao = new Dao<Person>();
dao.create(p);

Para inserir me da a seguinte exception:

org.hibernate.MappingException: Unknown entity: com.app.model.Person

3 Respostas

Java_Boy

Aparentemente o mapeamento da sua entity para a sessionFactory do hibernate não está ok. Está passando o qualificador corretamente?

D

Pelo que eu pude perceber se eu utilizar o pacote org.hibernate.annotations.Entity para mapear a classe e utilizar o recurso de dynamicInsert e dynamicUpdate, da o erro já citado, agora se eu utilizar o pacote javax.persistence.Entity para mapear a classe o erro não ocorre, dai tudo funciona.
Eu estava utilizando @Entity do hibernate justamente para utilizar o recurso dynamicInsert e dynamicUpdate, e pelo que eu andei pesquisando não existe algo semelhante para JPA.

Java_Boy

Puxa bom saber disso, apesar de não ser surpresa, apesar da versão 2.0 do JPA o Hibernate em certa features ainda se sobressai.

dynamic-update (optional - defaults to false): specifies that UPDATE SQL should be generated at runtime and can contain only those columns whose values have changed.

dynamic-insert (optional - defaults to false): specifies that INSERT SQL should be generated at runtime and contain only the columns whose values are not null.

Talvez até tenha algo similar no JPA puro, mas…

[]s

Criado 21 de outubro de 2009
Ultima resposta 21 de out. de 2009
Respostas 3
Participantes 2