多对多无效的对象名称 [英] Many to Many Invalid Object name
问题描述
我在代码中的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屋!