Вопрос

У меня есть эта странная проблема, где мой Merge () или мои функции Permist () не отражаются в базе данных. Мой 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);
    }
}

Мой getProductList() отлично работает, однако мой SaveProduct ничего не делает с базой данных.

Можете ли вы подумать о каких -либо причинах, почему это произойдет?

Я опубликую свой файл продукта. 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();
    }
}
Это было полезно?

Решение

Попробуйте вызовать метод flush () после того, как EntityManager Persist ().

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

Другие советы

Это может быть не тот ответ, который вам нужен, но, поскольку вы уже используете пружину, почему бы не упростить свою жизнь DAO, используя шаблоны Press Persistence (например, JPatemplate). Мой дао выглядит так:

    @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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top