多对多无效的对象名称 [英] Many to Many Invalid Object name

查看:161
本文介绍了多对多无效的对象名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在代码中的Employee-Project之间创建了多对多关系,但是当我想要使用它时抛出这个异常:



com.microsoft.sqlserver.jdbc.SQLServerException:无效的对象名'employee_project'。



我试过了,但是我没有成功找到这个根本原因例外。所以,请帮助我。



以下是Employee和Project的POJO以及引发此异常的代码



Employee pojo:

  @Entity 
@Table(name =Employee)
public class员工{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name =EMPLOYEE_ID_PK)
private int employeeIdPk;

@ManyToMany(fetch = FetchType.LAZY,cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
},
mappedBy =workers )
私人收藏< Project> projects = new HashSet< Project>(0);

$ / code>

项目pojo:



< pre $ @Entity
@Table(name =Project)
public class Project {

@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column(name =PROJECT_ID_PK)
private int projectIdPk;

@ManyToMany(fetch = FetchType.LAZY,cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(name = EmployeeProject,joinColumns = {
@JoinColumn(name =PROJECT_ID_PK)},
inverseJoinColumns = {@JoinColumn(name =EMPLOYEE_ID_PK)})
Collection< Employee> workers = new HashSet< Employee>(0);

$ / code>

问题代码:

  Project project = projectRepository.findByProjectIdPk(24); 
收藏<员工> employees = project.getWorkers();

我使用Spring Data Jpa和SQL Server。 :
这是我当前数据库的图片

解决方案

所以,我自己解决了这个问题。显然,如果我在 @JoinTable(Employee_Project)中添加一个下划线,并在数据库中改变它的作品。



有人可以解释为什么我必须这样做吗?

I have a Many-To-Many relationship created between Employee-Project in my code, but when I want to use its throws this exception:

com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'employee_project'.

I tried, but I did not succeed finding the root cause of this exception. SO, please help me.

Below are the POJOs for Employee and Project and also the code that throws this exception

Employee pojo:

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

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "EMPLOYEE_ID_PK")
private int employeeIdPk;

@ManyToMany(fetch = FetchType.LAZY,  cascade = {
        CascadeType.PERSIST,
        CascadeType.MERGE
        },
        mappedBy = "workers")
private Collection<Project> projects = new HashSet<Project>(0);
}

Project pojo:

@Entity
@Table(name = "Project")
public class Project {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "PROJECT_ID_PK")
private int projectIdPk;

@ManyToMany(fetch = FetchType.LAZY, cascade = {
        CascadeType.PERSIST,
        CascadeType.MERGE
    })
@JoinTable(name = "EmployeeProject", joinColumns = { 
        @JoinColumn(name = "PROJECT_ID_PK") }, 
        inverseJoinColumns = { @JoinColumn(name = "EMPLOYEE_ID_PK") })
Collection<Employee> workers = new HashSet<Employee>(0);
}

Problem code:

Project project = projectRepository.findByProjectIdPk(24);
Collection<Employee> employees = project.getWorkers();

I am using Spring Data Jpa and SQL Server. : Here is a picture of my current database

解决方案

So, I solved the problem myself. Apparently, if I add an underscore inside @JoinTable(Employee_Project) and also change that in database its works.

Can somebody please explain why I had to do this?

这篇关于多对多无效的对象名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆