我在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