He seguido el crusos y al ejecutar el código se realizan los cambios en la base de datos (crea las columnas y cambia los tipos de datos), pero muere antes de poder crear la instancia del producto en la base de datos debido a la siguiente excepcion:
Hibernate:
select
next value for products_SEQ
may. 02, 2023 12:24:40 P. M. org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 42601
may. 02, 2023 12:24:40 P. M. org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ERROR: error de sintaxis en o cerca de «products_SEQ»
Position: 23
Exception in thread "main" jakarta.persistence.PersistenceException: Converting `org.hibernate.exception.SQLGrammarException` to JPA `PersistenceException` : could not extract ResultSet
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:165)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:175)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:182)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:743)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:721)
at tienda.model.ProductDAO.save(ProductDAO.java:15)
at tienda.model.TestConection.main(TestConection.java:18)
Esta es mi clase producto:
@Entity
@Table (name = "products")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
// @Column(name = "names")
private String name;
private BigDecimal price;
private LocalDate registerDate = LocalDate.now();
@Enumerated(EnumType.STRING)
private Deparment deparment;
public Product(String name, BigDecimal price, Deparment deparment) {
this.name = name;
this.price = price;
this.deparment = deparment;
}
}
Y mi main:
public static void main(String[] args){
Product celular = new Product("Chayomi", new BigDecimal("600.000"), Deparment.Phones);
EntityManager em = JPAUtils.getEntityManager();
ProductDAO productDAO = new ProductDAO(em);
em.getTransaction().begin();
productDAO.save(celular);
em.getTransaction().commit();
em.close();
}
En la base de datos coincide el nombre de la tabla con la clase y demás, pero no crea la instancia en la tabla.