Desabilitar a anotação GeneratedValue, tem como?

Boa tarde

Como faço pra desabilitar a anotação @GeneratedValue ?

Tenho a seguinte entidade:

@Entity
public class Conta {

@Id	
@GeneratedValue
	private Integer id;

...

Se eu tirar @Id e @GeneratedValue o hibernate não faz insert.

Estou usando JPA e quero inserir o id da tabela na mão, tem como ?

Tentou tirar apenas o @GeneratedValue?

sim, quando dei um em.persis(referencia) me retorno o seguinte erro:

20:22:12,952  WARN JDBCExceptionReporter:233 - SQL Error: 544, SQLState: 23000
20:22:12,953 ERROR JDBCExceptionReporter:234 - Não é possível inserir um valor explícito para a coluna de identidade na tabela 'Conta' quando IDENTITY_INSERT está definido como OFF.
20:22:12,956 ERROR AbstractFlushingEventListener:324 - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: could not insert: [br.com.caelum.financas.modelo.Conta]
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2436)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2856)
	at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)

...

E como você criou o objeto?

de duas formas:
1

EntityManager em = new JPAUtil().getEntityManager();
	em.getTransaction().begin();
	Conta conta = new Conta();

	
	conta.setId("5");
	em.persist(conta);
	
	em.getTransaction().commit();
	em.close();

2
Criei uma classe o metodo ContaDAO:

public void insereDados(Integer id, String agencia, String banco,
			String numero, String titular) {
		em.createNativeQuery(
				"INSERT INTO Conta (id, agencia, banco, numero, titular) "
						+ "VALUES(?,?,?,?,?)").setParameter(1, id)
				.setParameter(2, agencia).setParameter(3, banco)
				.setParameter(4, numero).setParameter(5, titular)
				.executeUpdate();
	}

e mesmo assim nao funciona :frowning:

Basta remover a anotação @GeneratedValue e setar o id “na mão”.

Verifique se seu banco marcou a coluna como Identity, nesse caso tem que remover esta propriedade para poder informar o id.

Seu id é um Integer, você esta passando uma String?

E por que está usando Native Query? Só pra testes? Bastaria usar:

A entidade ficaria da seguinte forma:

@Entity
public class Conta {

	@Id
	private Integer id;
...

correto ?

[quote=renatorudolf]
A entidade ficaria da seguinte forma:

@Entity
public class Conta {

	@Id
	private Integer id;
...

correto ?[/quote]

Sim. Mas drope as tabelas do banco de dados, ou remova a propriedade Identity da tabela do banco de dados que deve ter sido adicionada pela JPA.

Valew fredericomaia1, não tava conseguindo porque não tinha tropado o banco, agora funcionou.

Valew tb Hebert Coelho pela força.

Ótimo. Por nada. =]