给出一对五和多对一的关系有啥问题。为啥会发生这个错误

Posted

技术标签:

【中文标题】给出一对五和多对一的关系有啥问题。为啥会发生这个错误【英文标题】:what s problem to give one-to-may and many-to-one relationship .why this error is occure给出一对五和多对一的关系有什么问题。为什么会发生这个错误 【发布时间】:2019-04-18 10:56:35 【问题描述】:

org.hibernate.AnnotationException:非法尝试将非集合映射为@OneToMany、@ManyToMany 或@CollectionOfElements:blooom.utility.model.BlooomModules.serverModel 在 org.hibernate.cfg.annotations.CollectionBinder.getCollectionBinder(CollectionBinder.java:332) 在 org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1904) 在 org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:972) 在 org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:799) 在 org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:250) 在 org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:231) 在 org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:274) 在 org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:84) 在 org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:474) 在 org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:85) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:689) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724) 在 org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:615) 在 org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:599) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1821) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1758) ...省略了60个常用帧

【问题讨论】:

请把你的源代码提出问题 我不能那样做..@HienNguyen 您可以添加更多详细信息。 ***.com/questions/ask/wizard 这是提问的好方法。请参考本指南,***.com/help/how-to-ask 【参考方案1】:

如果没有相关代码,很难回答您的问题。 也许您交换了模型类中的注释?

正如例外所说,您只能用@OneToMany@ManyToMany@CollectionOfElements 注释Collection

看看这里的例子:

https://en.wikibooks.org/wiki/Java_Persistence/ManyToOne https://en.wikibooks.org/wiki/Java_Persistence/ManyToMany

【讨论】:

【参考方案2】:

我认为您需要通过 Collection 更改您的类型字段,例如:

@OneToMany
private Article article;

替换为

@OnToMany
private Collection<Article> article;

【讨论】:

【参考方案3】:

发生该错误是因为我在没有使用任何集合类的情况下引用了模型类。 错误代码 : 私人 XYZModel xyzmodel; 正确代码: 私有集合 xyzmodel = new HashSet();

【讨论】:

以上是关于给出一对五和多对一的关系有啥问题。为啥会发生这个错误的主要内容,如果未能解决你的问题,请参考以下文章

hibernate的一对多和多对一关联

Hibernate中一对多和多对一关系

使用一对一的表关系有啥好处? (MySQL)

如何将这种多对一的关系改为一对一?

hibernate一对多关联映射

如何在 DynamoDB 中建模一对一、一对多和多对多关系