Pregunta

Estoy teniendo este problema extraño donde mi merge () o Mi persisten () funciones no están siendo reflejadas en la base de datos. Mi JdbcProductDao.java:

@Repository("productDao")
public class JdbcProductDao implements ProductDao {
    @PersistenceContext
    private EntityManager entityManager;

    public JdbcProductDao(){
    }

    public Product getReference(Product product){
      return getEntityManager().getReference(product.getClass(),product.getId());
    }

    public void persist(Product product){
        getEntityManager().persist(product);
    }

    public EntityManager getEntityManager(){
        return entityManager;
    }

    public void setEntityManager(EntityManager entityManager){
        this.entityManager = entityManager;
    }

    @SuppressWarnings("unchecked")
    public List<Product> getProductList(){
        return getEntityManager().createQuery("from Product").getResultList();
    }

    public void saveProduct(Product product){
        persist(product);
    }
}

Mi getProductList() funciona bien sin embargo mi saveProduct no hace nada a la base de datos.

¿Se le ocurre alguna razón por esto estaría sucediendo?

Voy a publicar mi archivo Product.java:

@Entity
@Table(name="products")

public class Product implements Serializable {
    @Id
    @Column(name = "id")
    private int id;
    @Column(name = "description")
    private String description;
    @Column(name = "price")
    private Double price;

    public void setId(int i) {
        id = i;
    }

    public int getId() {
        return id;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public String toString() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("Description: " + description + ";");
        buffer.append("Price: " + price);
        return buffer.toString();
    }
}
¿Fue útil?

Solución

tratar de llamar al método flush () después de EntityManager persisten ().

public void persist(Product product){
    getEntityManager().persist(product);
    getEntityManager().flush();
}

Otros consejos

esto puede no ser la respuesta que necesita, pero, dado que está utilizando la primavera ya, por qué no le hacen la vida DAO mediante el uso de las plantillas de persistencia de primavera (por ejemplo jpaTemplate). mirada de mi DAO de esta manera:

    @Override
@SuppressWarnings("unchecked")
public List<Sample> findAll() {
    return jpaTemplate.find("from Sample");
}

    @Override
public Sample findById(Long sampleId) {
    return jpaTemplate.find(Sample.class, sampleId);
}

    @Override
public Sample store(Sample dp) {
    return jpaTemplate.merge(dp);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top