Java Hibernate Spring注释异常未映射类
mvn clean install运行时没有任何错误,但当我启动tomcat6时,出现以下错误:由以下原因引起: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] 整棵
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;