2016-04-05 3 views
2

Я могу сохранять объекты в реляционной базе данных с помощью спящего режима. смотрите следующий код.Получение данных из таблицы с помощью hibernate

package one; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.SecondaryTable; 
import javax.persistence.Table; 

@Entity 
public class Customer { 

    @Id 
    private int customerId; 
    private String customerName; 
    private String customerAddress; 
    private int creditScore; 
    private int rewardPoints; 

    public Customer() 
    { 

    } 

    public Customer(int customerId,String customerName,String customerAddress,int creditScore,int rewardsPoints) 
    { 
     this.customerId=customerId; 
     this.customerAddress=customerAddress; 
     this.creditScore=creditScore; 
     this.customerName=customerName; 
     this.rewardPoints=rewardsPoints; 
    } 

    public int getCustomerId() { 
     return customerId; 
    } 
    public void setCustomerId(int customerId) { 
     this.customerId = customerId; 
    } 
    public String getCustomerName() { 
     return customerName; 
    } 
    public void setCustomerName(String customerName) { 
     this.customerName = customerName; 
    } 


    public String getCustomerAddress() { 
     return customerAddress; 
    } 
    public void setCustomerAddress(String customerAddress) { 
     this.customerAddress = customerAddress; 
    } 


    public int getCreditScore() { 
     return creditScore; 
    } 
    public void setCreditScore(int creditScore) { 
     this.creditScore = creditScore; 
    } 

    public int getRewardPoints() { 
     return rewardPoints; 
    } 
    public void setRewardPoints(int rewardPoints) { 
     this.rewardPoints = rewardPoints; 
    } 

} 

Для сохранения объекта данного класса я использовал следующий класс. следующий класс создает объект класса Customer и сохраняет этот объект в базе данных, а затем снова извлекает его и печатает свойство CustomerName для каждого сохраненного объекта.

package one; 

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

public class TestCustomer { 
    public static void main(String args[]) 
    { 
     Customer cust = new Customer(13,"Sara","Banglore",9000,60); 


     SessionFactory factory = new Configuration().configure().buildSessionFactory(); 
     Session session = factory.openSession(); 
     session.beginTransaction(); 
     session.save(cust); 
     session.getTransaction().commit(); 
     session.close(); 

     session = factory.openSession(); 
     session.beginTransaction(); 
     List list = session.createQuery("FROM Customer").list(); 
     Iterator iterator = list.iterator(); 

     while(iterator.hasNext()) 
     { 
      Customer custA = (Customer)iterator.next(); 
      System.out.println("First Name\t"+custA.getCustomerName()); 
     } 
     session.getTransaction().commit(); 
     session.close(); 

    } 
} 

Я выполнил над кодом довольно много раз. код работает нормально. он может извлекать все объекты, которые сохраняются. но тогда я использовал оракул жабу и выстрелил sql заявление как

Insert into Customer(CUSTOMERID,CREDITSCORE,CUSTOMERNAME,REWARDPOINTS,CUSTOMERADDRESS) 
VALUES(87,4000,'Saurabh',20,'Kalwa'); 

запись сохраняется в таблице, но когда я исполняю выше кода, я не в состоянии принести эту запись. Один вывод, который я могу сделать, - это спящий режим, возвращает persisted objects, но все равно есть ли другой способ получить все записи?

ответ

2
  1. Вы уверены, что вы отправили запись после вставки с жабой для оракула? (Вы можете открыть другого клиента и выполнить выбор, чтобы убедиться, что он может быть извлечен из SQL-клиента).
  2. Если вы хотите отлаживать, вы можете включить функцию регистрации sql из спящего режима, а затем выполнить sql, который hibernate генерирует для вашего запроса в sql-клиенте, чтобы убедиться, что все записи могут быть правильно выбраны.

И некоторые предложения по использованию JPA:

  1. Убедитесь, что @Entity имеет значение имени, которое отображение вашей физической таблицы, чтобы избежать отображения таблицы путаницы.
  2. Используйте @Column (name = "column") для всех ваших полей для сопоставления в столбец физической таблицы, чтобы избежать путаницы.
+0

Похоже, что первая причина. _suggestions для использования JPA_ не является обязательным. Использование стратегии именования является хорошей практикой. –

Смежные вопросы