Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA标准查询类';s";从「;方法不接受实体类。抛出IllegalArgumentException_Java_Mysql_Hibernate_Jpa - Fatal编程技术网

Java JPA标准查询类';s";从「;方法不接受实体类。抛出IllegalArgumentException

Java JPA标准查询类';s";从「;方法不接受实体类。抛出IllegalArgumentException,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,我试图将一个实体类传入JPA CriteriaQuery类以进行MySQL搜索操作。但在运行时,我得到一个错误,即 “java.lang.IllegalArgumentException:不是实体:类 com.flowManagementSystem.entity.Userscom.flowManagementSystem.entity.Users是我的实体类 类具有javax.persistence.Entity注释和表名。此外,类映射到hibernate.cfg.xml文件中 //hiber

我试图将一个实体类传入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;
//休眠配置>
...
//实体类>
包com.flowManagementSystem.entity;
导入javax.persistence.Entity;
导入javax.persistence.GeneratedValue;
导入javax.persistence.GenerationType;
导入javax.persistence.Id;
导入javax.persistence.Table;
导入javax.persistence.Column;
导入java.util.Date;
@实体
@表(name=“users”)
公共类用户{
@身份证
@GeneratedValue(策略=GenerationType.TABLE)
@列(name=“us_prime”)
私有国际usPrima;
@列(name=“us\u id”)
私人字符串usId;
我希望它能连接到MySQL数据库并提取一些数据

p

您需要将
com.flowManagementSystem.entity.Users
条目添加到
persistence.xml


持久性单元在Persistence.xml文件中定义,该文件必须位于类路径的META-INF目录中。一个Persistence.xml文件可以包含一个或多个持久性单元的定义。在JPA中实例化EntityManagerFactory的可移植方法(如JPA概述部分所述)需要一个持久性单元。更多详细信息。

您也可以从代码中创建一个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();
  }

这是错误消息java.lang.IllegalArgumentException:非实体:org.hibernate.metamodel.internal.metamodeimpl.entity(metamodeimpl.java:536)处的class com.flowManagementSystem.entity.Users位于org.hibernate.query.criteria.internal.QueryStructure.from(QueryStructure.java:126)org.hibernate.query.criteria.internal.CriteriaQueryImpl.from(CriteriaQueryImpl.java:153),com.flowManagementSystem.dao.impl.UserDaoImpl.getlogiuser(UserDaoImpl.java:38),com.flowManagementSystem.services.UserLoginService.getUser(UserLoginService.java:14)JPA不使用特定于Hibernate的遗留文件。它使用persistence.xml和orm.xml persistence.xml应该在/src/main/resources?或者在它的子目录中?它应该放在classpath根目录下的META-INF目录下仍然没有运气将它放在/src/main/resources/META-INF中这就是我的persistence.xml的样子com.flowManagementSystem.entity.Users如果可能,添加项目结构的快照我在主要问题中添加了一个pic我正在制作一个REST API,因此我的主类与您的略有不同,我仍然可以添加您所说的配置吗?主类[package com.flowManagementSystem.main;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.springbootplication;@springbootplication(scanBasePackages={“com.flowManagementSystem”})公共类FlowManagementSystemApplication{public static void main(String[]args){SpringApplication.run(FlowManagementSystemApplication.class,args);}}}]@Java Noob Dev是的,您可以将这两个静态函数放在某个实用程序类中,您只需从hibernate.cfg.xml加载配置,也可以在代码中创建。只要您需要sessionFactory,就可以调用该函数。
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);
 }