Java 多对多无效对象名

Java 多对多无效对象名,java,hibernate,jpa,orm,many-to-many,Java,Hibernate,Jpa,Orm,Many To Many,我在代码中的Employee项目之间创建了多对多关系,但当我想使用它时,会引发以下异常: com.microsoft.sqlserver.jdbc.SQLServerException:对象名称“employee\u project”无效 我试过了,但没有成功找到这个异常的根本原因。所以,请帮帮我 下面是员工和项目的POJO,以及引发此异常的代码 员工pojo: @Entity @Table(name = "Employee") public class Employee { @Id @Gen

我在代码中的Employee项目之间创建了多对多关系,但当我想使用它时,会引发以下异常:

com.microsoft.sqlserver.jdbc.SQLServerException:对象名称“employee\u project”无效

我试过了,但没有成功找到这个异常的根本原因。所以,请帮帮我

下面是员工和项目的POJO,以及引发此异常的代码

员工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);
}
@实体
@表(name=“Employee”)
公营雇员{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“EMPLOYEE\u ID\u PK”)
私人国际雇员IDPK;
@ManyToMany(fetch=FetchType.LAZY,级联={
cascade type.PERSIST,
级联类型合并
},
mappedBy=“工人”)
私有集合项目=新哈希集(0);
}
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);
}
@实体
@表(name=“项目”)
公共类项目{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“PROJECT\u ID\u PK”)
私用dpk;
@ManyToMany(fetch=FetchType.LAZY,级联={
cascade type.PERSIST,
级联类型合并
})
@JoinTable(name=“EmployeeProject”,joinColumns={
@JoinColumn(name=“PROJECT\u ID\u PK”)},
inverseJoinColumns={@JoinColumn(name=“EMPLOYEE\u ID\u PK”)})
集合工作者=新哈希集(0);
}
问题代码:

Project project = projectRepository.findByProjectIdPk(24);
Collection<Employee> employees = project.getWorkers();
Project=projectRepository.findbyprojectdpk(24);
Collection employees=project.getWorkers();
我正在使用Spring数据Jpa和SQL Server:
所以,我自己解决了这个问题。显然,如果我在
@JoinTable(Employee_Project)
中添加下划线,并在数据库中对其进行更改,则其效果会更好


有人能解释一下我为什么要这样做吗?

@多对多关系我使用嵌入式表来定义它自己的存储库,但我无法在这个数据库中这样做way@BasilBattikhi但是我没有使用任何额外的列,为什么我要使用嵌入式表?这不是正确的方法。按照以下链接查看完成了多少映射您的场景在Hibernate测试套件中运行良好,因此我怀疑这与Spring数据包装器有关,或者与他们使用的Spring启动命名策略覆盖有关,这会改变默认的Hibernate行为。@Naros,这可能是问题所在。是的,我们在Spring使用的命名策略方面遇到了矛盾的问题。通常,最好将这些默认值专门重写为Hibernate使用的默认值,除非您升级的是需要旧命名行为的遗留应用程序。