[RESOLVIDO]Problema com Sequence no PostgreSQL

2 respostas
darksteel3000

Olá amigos, tenho uma classe que está toda mapeada, inclusive com o SequenceGenerator e tals.

Tenho a sequence que o hibernate cria pra mim quando sobe o servidor no banco.

MAS…

Ao tentar salvar um usuário, mostra:

Hibernate: select nextval ('SEQ_USUARIO')

Mas não salva nada, nem mostra no LOG algum tipo de insert. Já a sequence é incrementada em um normalmente.

O mapeamento:

@Id @SequenceGenerator(name = "SEQ_USUARIO", sequenceName = "SEQ_USUARIO", allocationSize = 1) @GeneratedValue(generator = "SEQ_USUARIO") @Column(name = "ID_USUARIO" ,insertable = true, updatable = false, nullable = false) private Long id;

2 Respostas

javaflex

darksteel3000:
Olá amigos, tenho uma classe que está toda mapeada, inclusive com o SequenceGenerator e tals.

Tenho a sequence que o hibernate cria pra mim quando sobe o servidor no banco.

MAS…

Ao tentar salvar um usuário, mostra:

Hibernate: select nextval ('SEQ_USUARIO')

Mas não salva nada, nem mostra no LOG algum tipo de insert. Já a sequence é incrementada em um normalmente.

O mapeamento:

@Id @SequenceGenerator(name = "SEQ_USUARIO", sequenceName = "SEQ_USUARIO", allocationSize = 1) @GeneratedValue(generator = "SEQ_USUARIO") @Column(name = "ID_USUARIO" ,insertable = true, updatable = false, nullable = false) private Long id;

Mostre todo o código envolvido com o salvamento do objeto para que possamos analisar. Às cegas acho que a transação não está sendo finalizada, mas mostre o código.

darksteel3000

Olha ai amigão:

@Repository
public class UsuarioDAOImpl implements UsuarioDAO, Serializable{

	private static Log LOG = LogFactory.getLog(UsuarioDAOImpl.class);
	
	private final SessionFactory factory;
	 
	@Autowired
	public UsuarioDAOImpl(final SessionFactory factory) {
		this.factory = factory;
	}
	
	@Transactional
	public Long save(Usuario usuario) {
		try{
			return (Long) factory.getCurrentSession().save(usuario);
		}catch(Exception e){
			e.printStackTrace();
			LOG.error(e.getMessage());
			return null;
		}
	}

Hibernate.cfg.xml

<property name="hibernate.hbm2ddl.auto">update</property>  

        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>

        <property name="hibernate.c3p0.min_size">5</property>  
        <property name="hibernate.c3p0.max_size">100</property>  
        <property name="hibernate.c3p0.timeout">1800</property>  
        <property name="hibernate.c3p0.max_statements">50</property>  
        <property name="hibernate.c3p0.idle_test_period">3000</property>  
        
        <property name="hibernate.show_sql">true</property>
        <property name="format_sql">true</property>

As outras propriedades estão no applicationContext.xml do spring.

Criado 23 de fevereiro de 2013
Ultima resposta 23 de fev. de 2013
Respostas 2
Participantes 2