java - 未找到 Hibernate 实体

标签 java hibernate

我目前正在处理一个旧项目,需要您的帮助。我是 Hibernate 的绝对初学者,所以请耐心等待。

因此,该应用程序使用 hibernate 4,并且它有一些可以工作的实体,数据库连接也可以工作。 因此,根据当前现有的内容,我创建了一个新实体来匹配我的 JSON_REQUEST 表。

entities.hbm.xml:

<hibernate-mapping>

<class entity-name="JsonRequest" name="com.dgp.cdn.model.impl.JsonRequest" table="JSON_REQUEST">
    <id name="id" type="long" column="ID">
        <generator class="sequence">
            <param name="sequence">SEQ_JSON_REQUEST</param>
        </generator>
    </id>
    <property name="status" column="STATUS" type="string">
        <type name="org.hibernate.type.EnumType">
            <param name="enumClass">com.dgp.cdn.model.CDNJsonRequestStatus</param>
            <param name="useNamed">true</param>
        </type>
    </property>
    <property name="requestType" column="REQUEST_TYPE" type="string">
        <type name="org.hibernate.type.EnumType">
            <param name="enumClass">com.dgp.cdn.model.CDNJsonRequestType</param>
            <param name="useNamed">true</param>
        </type>
    </property>
    <property name="fileId" column="FILE_ID" type="long" />
    <property name="nodeId" column="NODE_ID" type="long" />
    <property name="nbRetry" column="NB_RETRY" type="integer" />
    <property name="creationDate" column="CREATION_DATE" type="timestamp" />
    <property name="updateDate" column="UPDATE_DATE" type="timestamp" />
</class>

JsonRequest.java:

public class JsonRequest extends AbstractEntity /* provides an id field and its getter.setter */ implements Serializable {

private static final long serialVersionUID = 1L;

private CDNJsonRequestStatus status;
private CDNJsonRequestType requestType;
private Long fileId;
private Long nodeId;
private Integer nbRetry;
private Date creationDate;
private Date updateDate;

public JsonRequest() {
    super();
}

public JsonRequest(CDNJsonRequestType requestType, Long fileId) {
    super();
    this.status = CDNJsonRequestStatus.TO_PROCESS;
    this.requestType = requestType;
    this.fileId = fileId;
    this.nbRetry = 0;
}

public CDNJsonRequestStatus getStatus() {
    return status;
}
public void setStatus(CDNJsonRequestStatus status) {
    this.status = status;
}
public CDNJsonRequestType getRequestType() {
    return requestType;
}
public void setRequestType(CDNJsonRequestType requestType) {
    this.requestType = requestType;
}
public Long getFileId() {
    return fileId;
}
public void setFileId(Long fileId) {
    this.fileId = fileId;
}
public Long getNodeId() {
    return nodeId;
}
public void setNodeId(Long nodeId) {
    this.nodeId = nodeId;
}
public Integer getNbRetry() {
    return nbRetry;
}
public void setNbRetry(Integer nbRetry) {
    this.nbRetry = nbRetry;
}
public Date getCreationDate() {
    return creationDate;
}
public void setCreationDate(Date creationDate) {
    this.creationDate = creationDate;
}
public Date getUpdateDate() {
    return updateDate;
}
public void setUpdateDate(Date updateDate) {
    this.updateDate = updateDate;
}

@Override
public String toString() {
    return "JsonRequest [id=" + getId() + ", status=" + status + ", requestType=" + requestType + ", fileId=" + fileId
            + ", nodeId=" + nodeId + ", nbRetry=" + nbRetry + ", creationDate=" + creationDate + ", updateDate="
            + updateDate + "]";
}}

映射与应用程序属性中的实体一起放入 PersistenceMapping bean 中。

    @Configuration
public class PersistenceConfiguration {

    @Bean
    public HibernateJpaSessionFactoryBean hibernateJpaSessionFactoryBean() {
        return new HibernateJpaSessionFactoryBean();
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.jpa.mapping", ignoreUnknownFields = false)
    public PersistenceMapping persistenceMapping() {
        return new PersistenceMapping();
    }

    @Bean
    public PersistenceBeanPostProcessor persistenceBeanPostProcessor() {
        return new PersistenceBeanPostProcessor();
    }

}

这是 application.yml 中的映射路径

spring:
datasource:
    initialSize: 2
    maxActive: 40
    testWhileIdle: true
    validationQueryTimeout: 5
jpa:
    openInView: false
    show_sql: true
    generate-ddl: false
    mapping:
        resources:
             <!-- other entities mapping that works -->
            - META-INF/persistence/integration/entities.hbm.xml
            - META-INF/persistence/integration/queries.hbm.xml
            - META-INF/persistence/cdn/file/entities.hbm.xml
            - META-INF/persistence/cdn/integration/nativefs/entities.hbm.xml
            - META-INF/persistence/cdn/plugin/http/entities.hbm.xml
            - META-INF/persistence/cdn/plugin/nimble/entities.hbm.xml
            - META-INF/persistence/cdn/plugin/smooth/entities.hbm.xml
            - META-INF/persistence/cdn/actionRequest/entities.hbm.xml
            - META-INF/persistence/cdn/actionRequest/queries.hbm.xml
            - META-INF/persistence/cdn/publicRequest/entities.hbm.xml
            - META-INF/persistence/cdn/publicRequest/queries.hbm.xml
            <!-- the new entity mapping i'm trying to impement -->
            - META-INF/persistence/cdn/jsonStorage/entities.hbm.xml
            <!-- this one is empty for now -->
            - META-INF/persistence/cdn/jsonStorage/queries.hbm.xml
    hibernate:
        ddl-auto: none
        naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
    properties:
        hibernate.cache.use_second_level_cache: false
        hibernate.cache.use_query_cache: false
        hibernate.generate_statistics: true
        hibernate.cache.region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
        hibernate.current_session_context_class: org.springframework.orm.hibernate4.SpringSessionContext

我希望你能帮我弄清楚我错过了什么。谢谢。

最佳答案

原来是因为使用了entity-name="JsonRequest"。它导致 hibernate 无法正确地将类绑定(bind)到映射。 我把它删除了,它正在工作。 此外,我还必须将类型字符串删除到我的枚举属性中。

关于java - 未找到 Hibernate 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51964349/

相关文章:

hibernate - 扩展EhCache

java hibernate netbeans xml

java - 如何使用 Spring Boot 配置 Hibernate

java - Java中简单多线程程序的奇怪问题

java - 为什么不使用静态变量来为子类共享对象?

java - 对集合进行排序并将内容分配给java中的列表

java - 下载 hibernate jar 文件

java - 处理毒库 : hide axes/normals when drawing trianglemesh

java - tomcat 中的 HttpServletRequestWrapper 和 Filter 生命周期

java - 是否可以在 hibernate 映射中不创建第三个表