当前位置: 首页 > 知识库问答 >
问题:

组织。冬眠AnnotationException:没有为实体指定标识符-即使它是

邹昊
2023-03-14

我有以下配置:

<bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="jpaDataSource" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
        <property name="packagesToScan">
        <list>
            <value>com.example.domain</value>
            <value>com.example.repositories</value>
        </list>
    </property>
</bean>

我有我的Geoname类在com.example.domain:

@Entity
@Table(name="geonames")
public class Geoname implements Serializable {

    @Id
    @Column(name="geonameid")
    private Long geonameid = null;
}

然而,在运行时,我会遇到以下异常:

原因:组织。冬眠AnnotationException:未为实体com指定标识符。实例领域组织的地理名称。冬眠cfg公司。继承状态。在org上确定了faultaccesstype(InheritanceState.java:277)。冬眠cfg公司。继承状态。位于org的getElementsToProcess(InheritanceState.java:224)。冬眠cfg公司。AnnotationBinder。bindClass(AnnotationBinder.java:664)位于org。冬眠cfg公司。配置$MetadataSourceQueue。processAnnotatedClassesQueue(Configuration.java:3449)位于org。冬眠cfg公司。配置$MetadataSourceQueue。org上的processMetadata(Configuration.java:3403)。冬眠cfg公司。配置位于org的secondPassCompile(Configuration.java:1330)。冬眠cfg公司。配置buildSessionFactory(配置:1730)

知道为什么吗?

旁注:我在这个项目上结合了mongodb和hibernate/mysql。

共有3个答案

胡承载
2023-03-14

试试这个

  @Column(name="geonameid",unique=true,nullable=false)
哈襦宗
2023-03-14

我也遇到了同样的错误。我解决了这个问题,发现我并没有在实体类的Id字段中添加@Id注释。

@Entity
@Table(name="geonames")
public class Geoname implements Serializable {

    @Column(name="geonameid")
    private Long geonameid = null;
}
张翰海
2023-03-14

我有以下内容

import org.springframework.data.annotation.Id;

当然,它应该是:

import javax.persistence.Id;

感谢@JB Nizet

 类似资料:
  • 问题内容: 我有以下配置: 我在com.example.domain中有我的Geoname类: 但是,在运行时,出现以下异常: 造成原因:org.hibernate.AnnotationException:未为实体指定标识符:org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:277

  • 我正在使用Spring Boot 1.5.10和Spring Boot starter数据jpa。我有一个暂存表和一个生产表,它们都有相同的结构,只是表名不同。列包括: 复合键1 复合键2 复合键3 列A 列B c列 我收到以下错误: 原因:org.hibernate.注释异常:没有为实体指定标识符:com.foo.bar.StagingTbl 我有一个复合主键,类定义为: 我的具体类: 标识符应

  • 组织。冬眠HibernateeException:找到了多个具有给定标识符的行:578,用于类:com。冬眠查询表演坚持不懈模型百货商店 数据库没有标识符为578的重复存储行。使用SQL对其进行了检查: 它返回0条记录。 关于一、二的其他问题指出,问题可能与OneToOne映射本身有关。商店和员工实体具有OneToOne关系,我的映射如下: 工作人员: 商店: 如何修复它? 更新: 当查询被修改为

  • 我有两个实体,由单向连接OneTo很多: 当我试图用汽车创造我的司机时,像这样 ENVERS创建: 驱动程序表中包含新驱动程序数据的行,//例如,ID=1 包含新车数据的CAR表中的一行,//例如,ID=3 修订实体表中的一行,//例如,ID=8 驱动程序中的一行\u AUD: 一辆车有两排: 所以当我试图修改ID=1的驱动程序时 我得到了HibernateException,因为有两行具有相同的

  • 我在Hibernate中使用注释。我得到这个错误: 组织。冬眠MappingException:未知实体:xyz。豆在组织进行测试。冬眠实施。SessionFactoryImpl。位于org的getEntityPersister(SessionFactoryImpl.java:550)。冬眠事件def。DefaultLoadEventListener。org上的onLoad(DefaultLoad

  • 初始数据。专业有很多科目。 专业JAVA 对于一个主题来说,专业不能为空。我希望它能以下一种方式工作:当我保存/更新/分离一个主题时,同样的操作必须应用于专业。当我删除一个主题时,专业不会发生任何变化。 主题JAVA 我写了一个集成测试。生成专业()和生成主题()这只是util方法。 你可以在这张图片上看到测试结果。 subjectService在此处引发了异常。保存(主题1); 原因:org。冬