我正在尝试创建一个“简单”的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种常见帧省略
有人能告诉我我做错了什么吗?
下面你可以找到我的两个实体。
谢谢你的进阶。
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;和
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;发布于 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兼容
https://stackoverflow.com/questions/39295267
复制相似问题