【问题标题】:Don't repeat the DAO! Using the generic DAO不要重复 DAO!使用通用 DAO
【发布时间】:2014-04-24 15:01:32
【问题描述】:

我一直在尝试通过以下方式创建通用 DAO: http://www.ibm.com/developerworks/java/library/j-genericdao/index.html

不过,我坚持使用它。有一行看起来像这样:

GenericDao dao = (GenericDao);

我不明白这里发生了什么,主要是在等式的右侧。 Eclipse 在这条线上给了我两个标记:

GenericDao 是一个原始类型,应该被参数化。 (这是在左边的 GenericDao 上)

GenericDao 无法解析为变量。 (这个在右边的GenericDao上)

我从未在作业右侧的括号中单独看到类/接口名称,所以我不知道该怎么做。非常感谢您解释这一行中发生的事情,以便我可以弄清楚我应该如何处理它以使其正常工作。

(使用 Eclipse Kepler、Hibernate 4.3.5、Spring IDE 3.5、M2E 1.4.1,如果有任何区别的话)

【问题讨论】:

  • 您自己添加了;
  • 如果你对 spring 和 hibernate 没问题,试试 spring-data jpa。不再需要为 JPA 实体创建自己的通用 daos。
  • @NathanHughes 我对 Spring 不是很熟悉。在等待开始我的新工作时,我正在尝试结合 Hibernate 来学习它。我的团队给了我很多关于我们将要使用的技术(包括 Spring 和 Hibernate)的信息,但仅仅阅读它对我来说并不适用。我正在尝试将一些相当简单的项目放在一起,所以当我开始时,我至少知道这些事情是如何工作的。我会尝试查找 spring-data jpa,谢谢!
  • @ᴋᴇʏsᴇʀ 天哪,我觉得自己很笨。 Java 习惯把 ;在一行的末尾!
  • 这是我写的一个答案,描述了 spring-data jpa stackoverflow.com/a/15573461/217324 的基础知识,只是为了给你一个想法。

标签: java spring hibernate generics


【解决方案1】:

如果您查看给出的代码示例,那里有一个换行符。该行应为 GenericDao dao = (GenericDao) beanFactory.getBean("personDao"); 并修复有关原始类型的错误,将其更改为 GenericDao<Person,Long> dao = (GenericDao<Person, Long>) beanFactory.getBean("personDao"); 或类似的东西,假设主键的类型是 Long

【讨论】:

  • 你是说PK?我以为它是指主键,但实际上我无法在任何地方找到它......不过,我可能完全错了。
  • 大概就是这样。谢谢。
  • 如何在没有 JPA 的情况下在 spring boot 中做同样的事情?
【解决方案2】:

您的示例中的整行是

 GenericDao dao = (GenericDao)beanFactory.getBean("personDao");

【讨论】:

    【解决方案3】:

    正确的代码行:

    GenericDao dao = (GenericDao)
     beanFactory.getBean("personDao"); // This should normally be injected
    

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 2016-07-23
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 2018-08-25
      • 2018-01-10
      • 2019-07-31
      相关资源
      最近更新 更多