Hebert_Coelho 10 de jan. de 2013
Tentou tirar apenas o @GeneratedValue ?
renatorudolf 10 de jan. de 2013
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 )
...
Hebert_Coelho 11 de jan. de 2013
E como você criou o objeto?
renatorudolf 11 de jan. de 2013
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
fredericomaia10 11 de jan. de 2013
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:
renatorudolf 11 de jan. de 2013
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 ?
fredericomaia10 11 de jan. de 2013
renatorudolf:
A entidade ficaria da seguinte forma:
@Entity
public class Conta {
@Id
private Integer id ;
...
correto ?
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.
renatorudolf 11 de jan. de 2013
Valew fredericomaia1, não tava conseguindo porque não tinha tropado o banco, agora funcionou.
Valew tb Hebert Coelho pela força.
fredericomaia10 11 de jan. de 2013
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. =]