Метод "from" класса JPA CriteriaQuery не принимает класс сущности.Броски IllegalArgumentException - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь передать класс сущности в класс JPA CriteriaQuery, чтобы выполнить операцию поиска MySQL.Но во время выполнения я получаю сообщение об ошибке, говорящее

"java.lang.IllegalArgumentException: не сущность: класс

com.flowManagementSystem.entity.Users com.flowManagementSystem.entity.User s - это мой класс сущности

Класс имеет аннотацию javax.persistence.Entity и имя таблицы. Кроме того, класс отображается в hibernate.cfg.xml файле

//hibernate config> 
<hibernate-configuration>
    <session-factory>
    ...
        <mapping class="com.flowManagementSystem.entity.Users" />
</session-factory>
</hibernate-configuration>

//Entity class> 
package com.flowManagementSystem.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


import javax.persistence.Column;

import java.util.Date;



@Entity
@Table(name = "users")
public class Users {


@Id
@GeneratedValue(strategy = GenerationType.TABLE)
    @Column(name = "us_prime")
private int usPrima;

@Column(name = "us_id")
private String usId;

Я ожидаю, что он подключится к БД MySQL и получит некоторые данные

P Структура проекта

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

вы также можете создать SessionFactory из кода.у меня это прекрасно работает.

public static SessionFactory buildSessionFactoryFromAnnotatedClasses( List<Class> annotatedClassNames,Configuration config) {
    StandardServiceRegistry standardRegistry =
        new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
    MetadataSources sources = new MetadataSources(standardRegistry);
    annotatedClassNames.forEach(sources::addAnnotatedClass);
    Metadata metaData = sources.getMetadataBuilder().build();
    return metaData.getSessionFactoryBuilder().build();
  }

В вашем основном методе

public static void main(String[] args)  {
Configuration config=  new Configuration()
        .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
        .setProperty("hibernate.connection.driver_class", "com.mysql.cj.jdbc.Driver")
        .setProperty("hibernate.connection.url","jdbc:mysql://host:port/database")
        .setProperty("hibernate.connection.username", "userName")
        .setProperty("hibernate.connection.password", "password");
        // set all other properties which you want to set
       SessionFactory factory=buildSessionFactoryFromAnnotatedClasses(Arrays.AsList(Users.class),config);
 }
0 голосов
/ 21 декабря 2018

Вам необходимо добавить <class>com.flowManagementSystem.entity.Users</class> запись в persistence.xml.

Единицы персистентности определены в файле persistence.xml, который должен находиться в каталоге META-INF в classpath.Один файл persistence.xml может содержать определения для одной или нескольких единиц постоянства.Переносимый способ создания экземпляра EntityManagerFactory в JPA (как описано в разделе «Обзор JPA») требует единицы постоянства.Подробнее здесь .

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