当前位置: 首页 > 知识库问答 >
问题:

未定义Spring Boot EntityManagerFactory,不允许使用@ManyTone

羊毅庵
2023-03-14

我正在使用SpringBoot和JPA开发RESTfullWeb服务,但我遇到了一些类似的问题

[错误]执行目标org.springframework.boot失败:sping-boo-maven-plugin:1.5.3。释放:运行(default-cli)在项目SpringRest:一个异常发生在运行时。null: InvocationTargetExcture:错误创建bean与名称'entityManagerFactory'定义在类路径资源[org/spring框架/引导/自动配置/orm/jpa/HibernateJpaAutoConfiguration.class]:调用init方法失败;嵌套异常是<#################################################################################################################

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.RELEASE</version>
</parent>

<dependencies>

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- JSTL for JSP -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

    <!-- For JSP compilation -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
  <groupId>javax.transaction</groupId>
  <artifactId>jta</artifactId>
  <version>1.1</version>
  </dependency>

  <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.5</version>
    </dependency>

   <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
     <scope>test</scope>
  </dependency>
</dependencies>

实体

@Entity
@Table(name="DEPARTMENT")
public class Department {

    @Id
    @Column(name="Id",nullable=false,unique=true)
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    @Column(name="Description",nullable=false)
    private String description;

    @OneToMany(mappedBy = "department", cascade = CascadeType.ALL)
    private List<Employee> employees;

    public Department() {
        // TODO Auto-generated constructor stub
    }

   @Entity
@Table(name="EMPLOYEE")
public class Employee {

    @Id
    @Column(name="Id",nullable=false,unique=true)
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;

    @Column(name="Name",nullable=false)
    private String name;

    @Column(name="Surname",nullable=false)
    private String surname;
    @Column(name="Salary",nullable=false)
    private double salary;

    @Column(name="Department" , nullable=false)
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "Id",referencedColumnName="Id")
    private Department department;

    public Employee() {
        // TODO Auto-generated constructor stub
    }

仓库

import com.maven.nurcanyilmaz.models.Employee;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResource
public interface EmployeeRepository extends CrudRepository<Employee, Long> {

    Employee findByName(String name);

}


import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

import com.maven.nurcanyilmaz.models.Department;

@RepositoryRestResource
public interface DepartmentRepository extends CrudRepository<Department, Long> {

    Department findByName(String name);
}

应用性质

 spring.mvc.view.prefix: /WEB-INF/
spring.mvc.view.suffix: .jsp
server.port=8088

spring.datasource.url = jdbc:mysql://localhost:3306/EmployeeDb
spring.datasource.username =root
spring.datasource.password =test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

# Show or not log for each sql query
spring.jpa.show-sql = true

# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = create-drop

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy


spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
server.error.whitelabel.enabled=false

共有3个答案

毛景曜
2023-03-14

正如错误描述所示,您不应该在@ManyToOne属性上添加@Column注释@JoinColumn就是您所需要的。

请参考https://en.wikibooks.org/wiki/Java_Persistence/ManyToOne

叶炜
2023-03-14

Hibernate不允许将@ColVIII注释与@ManyToOne一起使用。

如果要指定列名,可以使用@JoinColumn

朱宏爽
2023-03-14

在私人部门部门的员工实体中,您同时使用@列和@连接列,这似乎是个问题。查看您的实体时,您应该在那里使用@JoinColiv,而不是@Colsta。

 类似资料:
  • 我是android开发的新手,我正在尝试创建一个自定义的适配器,为RecyclerView提供一个只包含一个图像和一个文本视图的视图。 但是,我试图为onBindViewHolder(VH,int)定义一个简单的扩展ViewHolder,而Android studio根本不会采用自定义ViewHolder,'MyViewHolder' - 说“该方法不会覆盖其超类中的方法。 如果我把参数变成一个普

  • 我需要使用 restlet 客户端放置以下 rest 请求: 我可以在一个单独的调用中获取XToken,但是在当前的调用中,我无法在我的ClientResource对象中设置“Authorization”头。 有人可以建议我需要为我拥有的以下代码行添加哪些代码: 在restlet中创建和添加“Authorization”标头会导致restlet客户端库中出现错误。 提前谢谢 阿希什·夏尔马

  • 我正在尝试学习自定义验证。下面是简单的代码: 当我试图通过rails控制台插入数据时, 2.3.0 :014 它让我插入数据。我应该做些什么来使我的自定义验证方法起作用?

  • 问题内容: 我创建了 Objective C头文件 。并在其中添加了一些属性。 我 在文件中 声明 我在 Bridging-Header 文件中将此文件定义为 现在,当我想在某些 swift 文件中使用此属性时,构建失败,并且我正在 架构armv7的未定义符号:“ _ kColor005C98”,引用自: 我不知道我还需要做什么,所以我不会收到此错误?(我已经在其他 目标C 文件中成功使用了此属性

  • 问题内容: 我正在尝试在表格中添加序列号。这是我的方法: 为什么此方法给我一个错误,而我的结果集已设置为可更新。我正在使用derby数据库。 问题答案: 根据Derby文档,带有的查询不可更新: 只有简单的单表SELECT游标才可以更新。可更新ResultSet的SELECT语句与可更新游标的SELECT语句具有相同的语法。生成可更新的游标: 该语句不能包含子句。 基础查询必须是SelectExp

  • 我正在测试一个用Java和spring boot写的应用程序,我有一个问题。我的测试模拟一个HTTP请求,该请求只有在数据放置在头中时才有效。这是我的简单测试的代码: 不幸的是这次测试失败了。用于测试的Java代码如下: 在实际操作中,似乎找不到应该从请求头中取出的字符串!因此,测试只评估else分支,实际上在stacktrace中也告诉我,测试希望状态已创建,但状态302已给出。既然应用程序(没