首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ManyToOne ClassCastException

ManyToOne ClassCastException
EN

Stack Overflow用户
提问于 2016-09-02 14:49:38
回答 1查看 1.3K关注 0票数 0

我正在尝试创建一个“简单”的OneToMany和ManyToOne关系。我得到了以下例外:

原因: org.hibernate.mapping.PersistentClass.getRecursiveProperty(PersistentClass.java:464) ~hibernate-core-5.0.9 Final.jar:5.0.9 Final.jar: org.hibernate.mapping.PersistentClass.getRecursiveProperty(PersistentClass.java:420) ~hibernate-core-5.0.9.Final.jar:5.0.9.Final.jar:5.0.9.Final.jar:5.0.9 Final.jar。cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:758) ~hibernate-核心-5.0.9.Final.jar:5.0.9在org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:719) ~hibernate-核心-5.0.9.Final.jar:5.0.9在org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:54) ~hibernate-核心-5.0.9.Final.jar:5.0.9org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1655) ~hibernate处的.Final -core-5.0.9.Final.jar:5.0.9 Final.jar在org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1623) ~hibernate-core -5.0.9.Final.jar:5.0.9 Final.jar在org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278) ~hibernate-core-5.0.9.final.jar:5.0.9.在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847) ~hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:874) ~hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~spring-orm-4.3.2.RELEASE.jar:4.3.2在org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:338) ~spring-orm-4.3.2 4.3.2.RELEASE:4.3.2 org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:373) ~spring-orm-4.3.2.RELEASE.JAR:4.3.2org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:362) ~spring-orm-4.3.2.RELEASE.jar:4.3.2. .RELEASE在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) ~spring-beans- 4.3.2.RELEASE:4.3.2.RELEASE在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~spring-beans4.3.2.RELEASE.JAR:4.3.2. omitted . 39种常见帧省略

有人能告诉我我做错了什么吗?

下面你可以找到我的两个实体。

谢谢你的进阶。

代码语言:javascript
复制
  import javax.persistence.OneToMany;
@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"questionGroupID","questionID"})})
public class QuestionGroupEntity implements Serializable{

    private static final long serialVersionUID = 1796640204447018439L;

    @Id
    @NotEmpty
    @Column(name="question_group_id")
    private String questionGroupID;

    @NotEmpty
    private String label;


    @NotEmpty
    private String questionID;


    @OneToMany(fetch=FetchType.EAGER,targetEntity=QuestionGroupMappingEntity.class,mappedBy="questionGroup")
    List<QuestionGroupMappingEntity> questionGroupMappings;

代码语言:javascript
复制
import javax.persistence.ManyToOne;
    @Entity
    @Table(uniqueConstraints={@UniqueConstraint(columnNames={"questionGroupID","questionID","answerID"})})
    public class QuestionGroupMappingEntity implements Serializable {

        private static final long serialVersionUID = 8437546139229082305L;

        @Id
        @SequenceGenerator(name="groupMappingIDGenerator")
        @GeneratedValue(generator="groupMappingIDGenerator",strategy=GenerationType.AUTO)
        private String groupMappingID;

        @NotEmpty
        private String questionID;

        @NotEmpty
        private String questionGroupID;

        @NotEmpty
        private String answerID;

        @ManyToOne(fetch=FetchType.EAGER)
        @JoinColumn(name="question_group_id")
        private QuestionGroupEntity questionGroup;
EN

回答 1

Stack Overflow用户

发布于 2016-09-03 04:39:37

请检查您的QuestionGroupEntity实体,配置列名为"question_group_id“的private String questionGroupID;,但是仍然会添加带有"questionGroupID”列的@UniqueConstraint(columnNames={"questionGroupID","questionID"})},这将导致异常。

导致: org.hibernate.AnnotationException:无法在表question_group_entity:数据库列'questionGroupID‘上创建唯一的键约束(questionGroupID,questionID)。确保使用正确的列名,这取决于所使用的命名策略(它可能与实体中的属性名称不相同,特别是关系类型)在org.hibernate.boot.internal.InFlightMetadataCollectorImpl.buildUniqueKeyFromColumnNames(InFlightMetadataCollectorImpl.java:2090) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.buildUniqueKeyFromColumnNames(InFlightMetadataCollectorImpl.java:1965) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processUniqueConstraintHolders(InFlightMetadataCollectorImpl.java:1953) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1629) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278)在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:874)

修复此问题后,它可以与spring引导1.4兼容

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39295267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档