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

在使用Spring+Hibernate JPA时不添加persistence.xml时使用本机SQL的实体

毋修为
2023-03-14

目的是执行本机查询并将结果映射到bean类。我能够用实体测试我的应用程序。JPA能够根据实际的数据库表验证它们的映射。

为什么使用本机查询而不编写完整的实体->查询涉及多个联接。不需要将查询中涉及的所有表作为实体包含。

与jpa相关的应用程序上下文xml的一部分如下所示

<bean id="jpaVendorApdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="databasePlatform" value="org.hibernate.dialect.DB2Dialect"></property>
    <property name="showSql" value="true" />
</bean>

<bean id="testEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="dataSource" ref="testDB2DataSource" />
  <property name="packagesToScan" value="com.app.dao" />
  <property name="jpaVendorAdapter">
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
  </property>
  <property name="jpaProperties">
     <props>
        <prop key="hibernate.hbm2ddl.auto">validate</prop>
        <prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop>
     </props>
  </property>
public class OwnerDetails implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @Id
    private String userInitials;

    private String teamCd;

    public String getUserInitials() {
        return userInitials;
    }

    public void setUserInitials(String userInitials) {
        this.userInitials= userInitials;
    }

    public String getTeamCd() {
        return teamCd;
    }

    public void setTeamCd(String teamCd) {
        this.teamCd= teamCd;
    }
}
Query query = entityManager.createNativeQuery(queryString, className)(QUERY_STRING, OwnerDetails.class);
    query.setParameter("appName", "TESTAPP");


    OwnerDetails  result = (OwnerDetails ) query.getSingleResult();

当我试图执行查询时,我得到了下面的异常

原因:org.hibernate.mappingexception:未知实体:com.app.dao.entity.ownerdetails

我知道这是因为没有包含@Entity注释,但是当我包含Entity注释时,我会得到一个不同的错误

Update-因为API是JPA2.0命名的,所以不支持本机查询

共有1个答案

太叔高义
2023-03-14

试试这些步骤。

>

  • 在类中添加@entity注释
  • 在类中添加@table注释

     @Entity
     @Table(name="YourTableName") //if you do not put name, the dafault value is your class name
     public class OwnerDetails implements Serializable {
     }
    

    编辑:

  •  类似资料:
    • 问题内容: 我正在使用Spring JPA和Hibernate的项目。可以在Spring applicationContext.xml 文件中指定 persistence.xml中的 大多数内容。 __ 那么是否还需要 persistence.xml ? 谢谢。 问题答案: 更新: Spring 3.1将支持免费的JPA配置,请参阅Spring 3.1 M2:配置增强 。 darioo的答案适合实

    • 本文向大家介绍sql server使用临时存储过程实现使用参数添加文件组脚本复用,包括了sql server使用临时存储过程实现使用参数添加文件组脚本复用的使用技巧和注意事项,需要的朋友参考一下 脚本运行情况: 数据库中文件组添加效果: 总结 以上所述是小编给大家介绍的sql server通过临时存储过程实现使用参数添加文件组脚本复用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回

    • 我正在使用PhpStorm,对于函数,我想在评论部分添加< code>@since 1.0.0。像这样: PhpStorm文档中没有说明如何实现这一点。 < li >有没有人使用过PhpStorm,并让< code>@since在做自动注释时显示出来? < li >这可以自动化吗? < li >我应该在PhpStorm的什么地方指定一个版本号来跟踪它?

    • 我是一个Web开发新手,我已经开始学习后端。我在后端选择了Java,所以我开始学习Spring启动。我使用了IntelliJ ide。当我运行我的第一个代码时,我连接到了端口8080。但是当我在网络浏览器中打开localhost:8080页面时,它显示了一个登录页面或其他一些页面。但是在我遵循的一些教程中,他们能够修改localhost:8080页面。甚至试图更改端口,比如8090,它打开了相同的

    • 问题内容: 我有这样的课 而且我以为Spring Boot会尊重设置的urlPatterns,但是由于某种原因,每个请求都会到达此过滤器。我想我可能做错了。 另外,我没有使用Spring Security 问题答案: 您正在混合使用和。前者应在和结合使用的类上使用。后者应以Bean形式发布(就像您通过注释一样),并使用其方法配置url映射。

    • 问题内容: 我有一种用于在本地主机上执行命令的方法。我想向该方法添加一个超时参数,以便如果被调用的命令没有在合理的时间内完成,则该方法将返回错误代码。这是到目前为止的样子,无法超时: 谁能为我提出一种实现超时参数的好方法? 问题答案: