Spring存储库模式 - 虽然填充了表,但仍会找到一个或零结果

时间:2014-04-04 12:29:44

标签: spring repository-pattern

我在Spring中遇到了'存储库'这些奇怪的问题。嗯,我觉得这很奇怪,但我根本不太了解Spring。

问题:即使我知道各个数据库表中有数百行数据,其中一个存储库只返回一个项(结果类型为List< ...>),另一个不返回任何数据库所有,当调用findAll()时。

我怀疑没有使用标准自动生成的Long作为id可能存在一些问题,因此第二个repo是我为第二个@Entity类型实现的,具有自动生成的Long id,并在其中填充了数据一样的方法。

还尝试使用@Query,例如“从TypeName f中选择f”来查看是否存在差异。不会。

那么,这可能是什么问题?

尝试进入该接口的实现,但尝试单步执行Spring调用处理程序链是非常荒谬的;也许它背后的代码是生成字节码或其他什么。因此,欢迎提示如何调试此功能。

@Transactional(propagation = Propagation.REQUIRED)
public interface NewForumPersistence extends JpaRepository<SyncNewForum, Long> {

    @Query("select f from SyncNewForum f where :fromDate <= f.mtime")
    List<SyncNewForum> findSyncForumFromDate(@Param("fromDate") Date date);

    @Query("select f from SyncNewForum f where '1970-01-01 10:00:01.0' <= f.mtime ")
    List<SyncNewForum> findSyncForumWithOldLiteralDate();

    @Query("select f from SyncNewForum f ")
    List<SyncNewForum> findAllForums();
}

实体:

@Entity
public class SyncNewForum {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", nullable = false, unique = true)
    public Long id;

    /**
     * 
     */
    public Date mtime = new Date();

}

测试代码:

@Autowired
public NewForumPersistence itsNewForumPersistence;

测试本身:

    List<SyncNewForum> news = itsNewForumPersistence.findSyncForumWithOldLiteralDate();

    trace("news.size() = " + news.size());

    {
        List<SyncNewForum> all = itsNewForumPersistence.findAll();
        trace("all.size() = " + all.size());
    }
    {
        List<SyncNewForum> all = itsNewForumPersistence.findAllForums();
        trace("all.size() = " + all.size());
    }
    {
        SyncNewForum first = itsNewForumPersistence.findOne(1L);
        trace("first = " + first);
    }

打印:

    news.size() = 0
    all.size() = 0
    all.size() = 0
    first = null

0 个答案:

没有答案