Frage

Ich habe eine einfache Tabelle erstellt wie unten.

CREATE TABLE CUSTOMERS
(
    CUST_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
    CUSTOMER_NAME VARCHAR(24) NOT NULL,
    REGION VARCHAR(26),
    PRIMARY KEY (CUST_ID)
);

Dann habe ich mit dieser Zuordnungsdatei eine Zuordnung für diese Tabelle erstellt

<class name="Customer" table="CUSTOMERS">
    <id  type="int" column="CUST_ID" >
        <generator class="native"></generator>
    </id>
    <property name="customerName" type="string" column="CUSTOMER_NAME" />
    <property name="region" type="string" column="REGION"/>
</class>

Ich habe dann eine einfache Klasse wie unten erstellt, um auf die DB zuzugreifen.

public class CustomerDao {

    public void addCustomer(Customer customer) {
        Session session = SessionManager.getSessionFactory()
                .getCurrentSession();
        session.beginTransaction();
        session.saveOrUpdate(customer);
        session.getTransaction().commit();
    }

    public List<Customer> getAllCustomer() {
        Session session = SessionManager.getSessionFactory()
                .getCurrentSession();
        session.beginTransaction();
        List<Customer> booksList = session.createQuery("from Customer").list();
        session.getTransaction().commit();
        return booksList;
    }
}

Die Kundenklasse ist nur ein Pojo

public class Customer {
    private int customerID;
    private String customerName;
    private String region;
    //getters setters
}

Es bindet jedoch nicht an den generierten Schlüssel in der Tabelle.

public class Starter {
    public static void main(String[] args) {
        List<Customer> lstCust = daoCust.getAllCustomer();
        for (Customer cust : lstCust) {
            System.out.println(cust);
        }
    }
}

Die Ausgabe ist wie diese?

Customer Details:
------------
Customer ID:0
Customer Name: Symera
Region:Asia

Customer Details:
------------
Customer ID:0
Customer Name: Indra
Region:US

Customer Details:
------------
Customer ID:0
Customer Name:Istaf
Region:US

Habe ich etwas in meiner Kartierung vermisst? Das Hinzufügen von Kunden hat kein Problem, aber das Abrufen des automatisch generierten Schlüssels hat das Abrufen.

War es hilfreich?

Lösung

Ich denke, das Attribut für fehlende Name für ID -Tag in Ihrer HBM -Datei könnte das Problem sein:

<id  type="int" column="CUST_ID" name="customerID">
        <generator class="native"></generator>
    </id>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top