Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.hibernate.AnnotationException:没有为使用JPA XML实体映射的实体指定标识符_Java_Hibernate_Jpa - Fatal编程技术网

Java org.hibernate.AnnotationException:没有为使用JPA XML实体映射的实体指定标识符

Java org.hibernate.AnnotationException:没有为使用JPA XML实体映射的实体指定标识符,java,hibernate,jpa,Java,Hibernate,Jpa,我现在正在使用Hibernate 5.2.4.Final(从5.2.3升级,看看这是否可以修复错误,但仍然没有成功) 我有以下SQL: CREATE TABLE Token ( tokenId BIGINT PRIMARY KEY ,uuid UUID ,state INTEGER ,creationDate TIMESTAMP ,expirationDate TIMESTAMP ,use

我现在正在使用Hibernate 5.2.4.Final(从5.2.3升级,看看这是否可以修复错误,但仍然没有成功)

我有以下SQL:

 CREATE TABLE Token (
     tokenId        BIGINT PRIMARY KEY
    ,uuid           UUID
    ,state          INTEGER
    ,creationDate   TIMESTAMP
    ,expirationDate TIMESTAMP
    ,userId         BIGINT REFERENCES MyUser(id)
);
CREATE SEQUENCE TokenIdSeq;
以及映射文件中的以下实体:

<entity name="Token" class="com.library_provider.Token" access="FIELD">
    <id name="tokenId">
        <generated-value strategy="SEQUENCE" generator="TokenIdSeq" />
        <sequence-generator name="TokenIdSeq" sequence-name="TokenIdSeq" allocation-size="1" />
    </id>
    <basic name="uuid" />
    <basic name="state" />
    <basic name="creationDate" />
    <basic name="expirationDate" />
    <many-to-one name="userData" class="com.company.MyUser" column="userId" />
</entity>
我在启动Tomcat时遇到以下异常:

Caused by: org.hibernate.AnnotationException: No identifier specified for entity: com.library_provider.Token
    at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:231)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:719)
    at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:249)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:846)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:873)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:151)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:373)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:362)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579)
    ... 21 more

我使用的是JPA XML映射文件,而不是注释。为什么要抛出此异常?我的其他实体工作正常,不同之处在于我在这些字段中使用了
,但在这种情况下,我无法决定/更改
标记ID
字段的名称。

JPA映射文件缺少
标记,位于

应该是:

<entity name="Token" class="com.library_provider.Token" access="FIELD">
    <attributes>
        <id name="tokenId">
            <generated-value strategy="SEQUENCE" generator="TokenIdSeq" />
            <sequence-generator name="TokenIdSeq" sequence-name="TokenIdSeq" allocation-size="1" />
        </id>
        <basic name="uuid" />
        <basic name="state" />
        <basic name="creationDate" />
        <basic name="expirationDate" />
        <many-to-one name="userData" class="com.company.MyUser" column="userId" />
    </attributes>


您的令牌类是否具有所有的setter和getter?是的,它具有。。。我只是在更仔细地查看后发现了问题,现在就发布了答案(感觉很傻:D)
<entity name="Token" class="com.library_provider.Token" access="FIELD">
    <attributes>
        <id name="tokenId">
            <generated-value strategy="SEQUENCE" generator="TokenIdSeq" />
            <sequence-generator name="TokenIdSeq" sequence-name="TokenIdSeq" allocation-size="1" />
        </id>
        <basic name="uuid" />
        <basic name="state" />
        <basic name="creationDate" />
        <basic name="expirationDate" />
        <many-to-one name="userData" class="com.company.MyUser" column="userId" />
    </attributes>