Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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 hibernate实体发现仅在同一文件夹中工作_Java_Hibernate - Fatal编程技术网

Java hibernate实体发现仅在同一文件夹中工作

Java hibernate实体发现仅在同一文件夹中工作,java,hibernate,Java,Hibernate,我有一个带Hibernate的Spring Boot项目 项目不具有hibernate.cfg.xml文件 该项目也没有applicationContext.xml文件 尽管如此,一切都很好 但是,当我开始添加新的hibernate实体时,就会出现问题。出于某种原因,只有当我将它们放入其他hibernate实体的包中时,系统才会找到它们 因此,这让我相信我确实需要额外的配置来帮助自动发现机制。但2020年的技术水平如何?(我假设上面的xml文件现在已经被弃用了)。如果使用spring+hib

我有一个带Hibernate的Spring Boot项目

  • 项目不具有hibernate.cfg.xml文件
  • 该项目也没有applicationContext.xml文件
尽管如此,一切都很好

但是,当我开始添加新的hibernate实体时,就会出现问题。出于某种原因,只有当我将它们放入其他hibernate实体的包中时,系统才会找到它们


因此,这让我相信我确实需要额外的配置来帮助自动发现机制。但2020年的技术水平如何?(我假设上面的xml文件现在已经被弃用了)。

如果使用spring+hibernate,那么它可以通过@ComponenScan注释解决

如果是纯hibernate,那么我认为您需要persistence.xml

EntityManager是在JPA中执行数据库交互的类。 它通过名为persistence.xml的配置文件初始化。 该文件位于类路径的META-INF文件夹中,即 通常打包在JAR或WAR文件中。persistence.xml文件 包含:

  • 名为“持久性单元”,它指定您正在使用的持久性框架,如Hibernate或EclipseLink
  • 指定如何连接到数据库的属性集合,以及持久化中的任何自定义项 框架
  • 项目中实体类的列表

我完全忽略了SpringBootApplication类中存在的这些注释

@SpringBootApplication(scanBasePackages = {"com.domain.foo.bar.*"})
@EnableJpaRepositories(basePackages ={"com.domain.foo.bar.*"})
@EntityScan(basePackages ={"com.domain.foo.bar.*"})
public class SpringBootApplication extends SpringBootServletInitializer {
}

我需要在这里添加我的软件包。

早上第一件事就是尝试这个。结果是,在Spring Boot中,现在有一些更具体的注释,我已经在下面的答案中添加了这些注释。下次,请指定除hibernate外您使用的是什么:)@SpringBootApplication公共类SpringBootWebsocketApplication{public static void main(String[]args){SpringApplication.run(SpringBootWebsocketApplication.class,args);}}如果您使用的是spring boot,那么这段代码足以让所有程序包都能正常工作。您只需将所有程序包放在比这个类低一个级别上即可