Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 Spring注释异常未映射类_Java_Spring_Hibernate_Many To Many - Fatal编程技术网

Java Hibernate Spring注释异常未映射类

Java Hibernate Spring注释异常未映射类,java,spring,hibernate,many-to-many,Java,Spring,Hibernate,Many To Many,mvn clean install运行时没有任何错误,但当我启动tomcat6时,出现以下错误:由以下原因引起: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.xxx.server.entity.app.App.distributions[com.xxx.server.entity.distribution.Distribution] 整棵

mvn clean install运行时没有任何错误,但当我启动tomcat6时,出现以下错误:由以下原因引起:

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.xxx.server.entity.app.App.distributions[com.xxx.server.entity.distribution.Distribution]
整棵树都在尽头

我在这里和网上搜索了一整天,但没有找到一个有效的解决方案

设置: 我想在两个类之间对Hibernate进行多对多关联:App和Distribution:

Distribution.java:

@Entity
@Table(name = "DISTRIBUTION")
public class Distribution extends xxxEntity {

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "APP_DISTRIBUTION", joinColumns = { @JoinColumn(name = "distribution_id") }, inverseJoinColumns = { @JoinColumn(name = "app_id") })
    private Set<App> apps;

    }
另一件奇怪的事:在这个项目中,已经有很多人在工作,而且工作得很好:

public class Info extends xxxEntity {
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "USER_INFO", joinColumns = { @JoinColumn(name = "info_id") }, inverseJoinColumns = { @JoinColumn(name = "user_id") })
    private Set<User> users;

public class User extends xxxEntity {
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "USER_INFO", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "info_id") })
    private Set<Info> infos;
公共类信息扩展xxxEntity{
@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinTable(name=“USER\u INFO”,joinColumns={@JoinColumn(name=“INFO\u id”)},inverseJoinColumns={@JoinColumn(name=“USER\u id”)})
私人用户;
公共类用户扩展xxxEntity{
@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinTable(name=“USER\u INFO”,joinColumns={@JoinColumn(name=“USER\u id”)},inverseJoinColumns={@JoinColumn(name=“INFO\u id”)})
私人设置信息;
我写了两个测试,他们都通过了

public class DistributionTest extends BaseDaoTest {
    @Test
    @Transactional
    @Rollback(true)
    public void testDistribution() {
        // Test saving and loading Distribution
        Distribution distribution = DomainCreator.createDistribution("Fedora", "16.01");
        this.distributionDao.save(distribution); 
        assertEquals(distribution, this.distributionDao.findByName("Fedora"));

        // test loading set of distributions
        App app = appDao.findById("a1");
        Set<Distribution> distros = app.getDistributions();
        assertEquals(3, distros.size());
   }
}

public class AppDaoTest extends BaseDaoTest   {
@Test
@Transactional
@Rollback(true)
public void getAppsByDistribution() {
    Distribution distribution = distributionDao.findById("d1");
    Set<App> apps = distribution.getApps();
    assertEquals(4, apps.size());
}
}
公共类DistributionTest扩展了BaseDaoTest{
@试验
@交易的
@回滚(true)
公共分布(){
//测试保存和加载分配
Distribution Distribution=DomainCreator.createDistribution(“Fedora”,“16.01”);
this.distributionDao.save(分发);
资产质量(distribution,this.distributionDao.findByName(“Fedora”));
//分布的测试加载集
App App=appDao.findById(“a1”);
设置Distributions=app.getDistributions();
assertEquals(3,distros.size());
}
}
公共类AppDaoTest扩展了BaseDaoTest{
@试验
@交易的
@回滚(true)
公共无效getAppsByDistribution(){
Distribution Distribution=distributionDao.findById(“d1”);
Set apps=distribution.getApps();
assertEquals(4,apps.size());
}
}
所以我想这一定是Tomcat6的问题吧

我还做了:删除Tomcat部署目录中的所有内容并发布,但仍然是相同的错误

有人有想法吗?

检查示例3中的。因此,应用程序映射应该如下所示:

@Entity
@Table(name="APP")
public class App extends xxxEntity {

    @ManyToMany(mappedBy="apps")
    private Set<Distribution> distributions;
@实体
@表(name=“APP”)
公共类应用程序扩展xxxEntity{
@许多(mappedBy=“应用程序”)
私有集分布;

还要检查joinColumns和inverseJoinColumns是否根据示例进行了配置。

在我编写了通过的测试之后。 我认为我当地的tomcat6有问题。 因此,我将我的更改部署到另一台服务器,并在那里工作! 很抱歉用错误的问题打扰你

非常感谢你们的帮助

干杯


Flo

您是否已经重命名/移动了您的课程??(尤其是应用程序和发行版)?我添加了类分布。应用程序保持不变。非常感谢您的回答。我尝试过,但得到了完全相同的错误。joinColumns和inverseColumns来自import javax.persistence.JoinColumn;import javax.persistence.ManyToMany;
public class Info extends xxxEntity {
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "USER_INFO", joinColumns = { @JoinColumn(name = "info_id") }, inverseJoinColumns = { @JoinColumn(name = "user_id") })
    private Set<User> users;

public class User extends xxxEntity {
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "USER_INFO", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "info_id") })
    private Set<Info> infos;
public class DistributionTest extends BaseDaoTest {
    @Test
    @Transactional
    @Rollback(true)
    public void testDistribution() {
        // Test saving and loading Distribution
        Distribution distribution = DomainCreator.createDistribution("Fedora", "16.01");
        this.distributionDao.save(distribution); 
        assertEquals(distribution, this.distributionDao.findByName("Fedora"));

        // test loading set of distributions
        App app = appDao.findById("a1");
        Set<Distribution> distros = app.getDistributions();
        assertEquals(3, distros.size());
   }
}

public class AppDaoTest extends BaseDaoTest   {
@Test
@Transactional
@Rollback(true)
public void getAppsByDistribution() {
    Distribution distribution = distributionDao.findById("d1");
    Set<App> apps = distribution.getApps();
    assertEquals(4, apps.size());
}
}
@Entity
@Table(name="APP")
public class App extends xxxEntity {

    @ManyToMany(mappedBy="apps")
    private Set<Distribution> distributions;