Получить данные из базы данных после однонаправленной реализации OneToMany - PullRequest
1 голос
/ 11 января 2020

Итак, я получил этот проект, в котором я храню класс "Категория ie" в базе данных с однозначным отношением с классом "SousCategor ie" , который работает нормально, и это создает таблицу с именем "categoryorie_sous_categories"

, когда мне надоело извлекать данные из categoryorie_sous_categories таблицы. Произошла ошибка, связанная с отображением этого класса, в котором hibernate создал таблицу bu я не объявлял класс в моей программе: структура моей программы: enter image description here журнал исключений:

Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Categorie_sous_categories is not mapped [select categorie_matricule from categorie_sous_categories]

код, который я пытаюсь запустить:

SessionFactory sessionFactory = new Configuration().
                configure().buildSessionFactory();


        Session session = sessionFactory.openSession();
        session.beginTransaction();

        List<String> categorieList = session.createQuery("select categorie_matricule from categorie_sous_categories").list();
        for (String produit:categorieList){
            System.out.println(produit);
        }

        session.getTransaction().commit();
        session.close();

таблица, из которой я пытаюсь получить данные: enter image description here

my hibernate.cfg. xml file:

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>

        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/DevIT</property> <!-- BD Mane -->
        <property name="connection.driver_class">org.postgresql.Driver</property> <!-- DB Driver -->
        <property name="connection.username">postgres</property> <!-- DB User -->
        <property name="connection.password">test123</property> <!-- DB Password -->

        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> <!-- DB Dialect -->
        <property name="hbm2ddl.auto">update</property> <!-- create / create-drop / update -->

        <property name="show_sql">true</property> <!-- Show SQL in console -->
        <property name="format_sql">true</property> <!-- Show SQL formatted -->
        <property name="hibernate.current_session_context_class">thread</property>
        <mapping class="CoreApp.Categorie"/>
        <mapping class="CoreApp.SousCategorie"/>
        <mapping class="CoreApp.Produit"/>
    </session-factory>
</hibernate-configuration>

1 Ответ

1 голос
/ 11 января 2020

попробуйте select categorie_matricule from Categorie, он вернет ожидаемый результат. Кроме того, исключение говорит само за себя, таблица categorie_sous_categories не сопоставлена ​​ни с каким объектом / классом, это таблица сопоставления. И его не нужно извлекать напрямую, любой запрос, который вы хотите запустить в этой таблице, можно изменить - там, где используются оригинальные классы Categorie and SousCategorie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...