首页 > 解决方案 > 如何使用 Hibernate 从 Sql 数据库中更新、删除对象?

问题描述

描述

我只是想使用 Hibernate 和 mysql 实现 ORM,但唯一有效的方法是将单个对象添加到数据库,返回对象列表,通过关键字返回对象列表但删除对象和更新对象不是运作!有什么建议吗?

该表是在数据库中创建的,没有问题:)

实体

   package dao;

   import java.io.Serializable;
   import javax.persistence.Entity;
   import javax.persistence.Id;

   @Entity
   public class Produit implements Serializable{
    
      private static final long serialVersionUID = 8314029847799979249L;

      @Id
      private int ref;      
      private String desig;
      private double prix;
      private int quant;
 
      public Produit() {}
 
      public int getId() {
        return ref;
      }

      public void setId(int ref) {
        this.ref = ref;
      }
      public String getDesig() {
        return desig;
      }
      public void setDesig(String desig) {
       this.desig = desig;
      }
      public double getPrix() {
       return prix;
      }
      public void setPrix(double prix) {
       this.prix = prix;
      }
      public int getQuant() {
       return quant;
      }
      public void setQuant(int quant) {
       this.quant = quant;
      }
 
    }

界面

     package dao;

     import java.util.List;

     public interface InterfaceProduit {

        public void addProduit(Produit produit);
        public Produit getProduit(int id);
        public List<Produit> getListProduit();
        public List<Produit> getListProduitbykw(String mc);
        public void updateProduit(Produit p);
        public void deleteProduit(int id);
    
     }

实施

     package dao;
     import java.util.List;
     import javax.persistence.EntityManager;
     import javax.persistence.EntityManagerFactory;
     import javax.persistence.EntityTransaction;
     import javax.persistence.Persistence;
     import javax.persistence.Query;
     import javax.transaction.Transactional;

     @Transactional
     public class ImplInterfProduit implements InterfaceProduit{

     EntityManager manager;

     public ImplInterfProduit() {
         EntityManagerFactory factory = Persistence.createEntityManagerFactory("sample");
         manager = factory.createEntityManager();   
     }

     public void addProduit(Produit produit) {
         EntityTransaction transaction = manager.getTransaction();
         transaction.begin();
         try {
           manager.persist(produit);
           transaction.commit();
         }catch(Exception ex) {
           transaction.rollback();
           ex.printStackTrace();
         }      
     }

     public Produit getProduit(int id) {
        Produit p = manager.find(Produit.class, id);    
        return p;
     }

     public List<Produit> getListProduit() {    
        Query query = manager.createQuery("SELECT p FROM Produit p");   
        return query.getResultList();
     }

     public List<Produit> getListProduitbykw(String mc) {
        Query query = manager.createQuery("SELECT p FROM Produit p where 
        p.desig LIKE :x");
        query.setParameter("x", "%"+mc+"%");
        return query.getResultList();
     }

     public void updateProduit(Produit p) {
        manager.merge(p);       
     }

     public void deleteProduit(int id) {
        Produit p = manager.find(Produit.class, id);
        manager.remove(p);
     }
   }

持久性.xml

   <?xml version="1.0" encoding="UTF-8"?>
   <persistence xmlns="http://java.sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
         http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
         version="2.0">
          
       <persistence-unit name="sample">  
          <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
          <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/product"/>
            <property  name="hibernate.connection.username" value="product"/>
            <property  name="hibernate.connection.password" value="product"/>
            <property  name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>  
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>           
         </properties> 
      </persistence-unit>   
   </persistence>

主要的

package dao;

public class MainApp {

   public static void main(String[] args) {
    
    Produit p = new Produit();
    p.setId(9114);
    p.setDesig("telecom");
    p.setPrix(654.77);
    p.setQuant(40);
            
    ImplInterfProduit implProd = new ImplInterfProduit();
    
    implProd.addProduit(p);
    implProd.updateProduit(p);
    implProd.deleteProduit(8760);        
  }   
}

聚甲醛

 <project xmlns="http://maven.apache.org/POM/4.0.0" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 https://maven.apache.org/xsd/maven-4.0.0.xsd">  
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.yusfi</groupId>
 <artifactId>jpa</artifactId>
 <version>0.0.1-SNAPSHOT</version>

   <dependencies> 
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>5.4.10.Final</version>
    </dependency>

  <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>4.3.5.Final</version>
  </dependency>

  <dependency>
      <groupId>org.hibernate.javax.persistence</groupId>
      <artifactId>hibernate-jpa-2.0-api</artifactId>
      <version>1.0.1.Final</version>
  </dependency>
  
   <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.46</version>
   </dependency>  
 </dependencies>  
</project>

输出

Hibernate: 插入 Produit (design, prix, quant, ref) 值 (?, ?, ?, ?) Hibernate: 选择 produit0_.ref 作为 ref1_0_0_, produit0_.desig 作为 desig2_0_0_, produit0_.prix 作为 prix3_0_0_, produit0_.quant 作为 quant4_0_0_从产品 produit0_ where produit0_.ref=?

标签: javahibernatejpaorm

解决方案


 public List<Produit> getListProduit() {    
    Query query = manager.createQuery("FROM Produit", Produit.class);   
    return query.getResultList();
 }

 public List<Produit> getListProduitbykw(String mc) {
    Query query = manager.createQuery("FROM Produit P WHERE P.desig LIKE :x", Produit.class);
    query.setParameter("x", "%"+mc+"%");
    return query.getResultList();
 }

推荐阅读