Olá!
Meu código está praticamente igual ao da aula (exceto por alguns nomes, mas em termos funcionais está), e apareceu esse erro, ele não está conseguindo criar a coluna categoria aparentemente. Estou usando o banco de dados postgresSQL, e até aqui estava funcionando tudo certo.
esse é o meu código:
public class ProdutoDAO {
private EntityManager em;
public ProdutoDAO(EntityManager em) {
this.em = em;
}
public void cadastrar(Produto produto) {
this.em.persist(produto);
}
}
public enum Categoria {
CELULARES,
INFORMATICA,
LIVROS;
}
@Entity @Table(name = "produtos") public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String descricao;
private BigDecimal preco;
private LocalDate dataCadastro = LocalDate.now();
@Enumerated(EnumType.STRING)
private Categoria categoria;
public Produto () {}
public Produto(String nome, String descricao, BigDecimal preco, Categoria categoria) {
this.nome = nome;
this.descricao = descricao;
this.preco = preco;
this.categoria = categoria;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public BigDecimal getPreco() {
return preco;
}
public void setPreco(BigDecimal preco) {
this.preco = preco;
}
public LocalDate getDataCadastro() {
return dataCadastro;
}
public void setDataCadastro(LocalDate dataCadastro) {
this.dataCadastro = dataCadastro;
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
}
public class CadastroDeProduto {
public static void main(String[] args) {
Produto celular = new Produto("Xiaomi Redmi", "Muito Legal", new BigDecimal("800"), Categoria.CELULARES);
EntityManager em = JPAUtil.getEntityManager();
ProdutoDAO dao = new ProdutoDAO(em);
em.getTransaction().begin();
dao.cadastrar(celular);
em.getTransaction().commit();
em.close();
}
}
public class JPAUtil {
//cria o entitymanager, para garantir que a factory serja criada uma unica vez
private static final EntityManagerFactory FACTORY = Persistence
.createEntityManagerFactory("lojaJPA");
public static EntityManager getEntityManager() {
return FACTORY.createEntityManager();
}
}
<persistence-unit name="lojaJPA" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5433/lojaJPA"/>
<property name="javax.persistence.jdbc.user" value="postgres"/>
<property name="javax.persistence.jdbc.password" value="admin"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>