Hibernate Spring数据JPA,findOne null,@Query返回记录

Hibernate Spring数据JPA,findOne null,@Query返回记录,hibernate,caching,spring-data-jpa,ehcache,jhipster,Hibernate,Caching,Spring Data Jpa,Ehcache,Jhipster,我有一个Spring数据JPA ORM,它是使用EHCache从JHipster生成器和二级缓存实现的。(我想) 我已将数据从一个数据库表复制到另一个数据库表(使用flyway直接在SQL中): 并创建了一个新实体: @Entity @Table(name = "lobby") @Document(indexName = "lobby") public class Lobby { ... Lobby Lobby=lobbyRepository.findOne(id)(即使记录在数据

我有一个Spring数据JPA ORM,它是使用EHCache从JHipster生成器和二级缓存实现的。(我想)

我已将数据从一个数据库表复制到另一个数据库表(使用flyway直接在SQL中):

并创建了一个新实体:

@Entity
@Table(name = "lobby")
@Document(indexName = "lobby")
public class Lobby {
      ...
Lobby Lobby=lobbyRepository.findOne(id)
(即使记录在数据库中也返回null)

但是,如果创建查询:

@Query("SELECT lobby FROM Lobby lobby WHERE id = ?1)
public getOneById(Long id)
返回记录

情况可能并非如此,但我想不出还有什么其他原因会导致这种情况。如果我创建了新的大厅记录,
findOne


另外
findAll
正确返回所有记录。

我在这里看不到实体是可缓存的(没有关于该实体的注释),因此除非查询是可缓存的,否则这里不能涉及缓存

然后,即使是这样,您也需要查询表,然后返回null,然后通过SQL添加条目,最终再次查询并从缓存中获取结果(null)

但这是不可能的,因为您在创建时正在填充表


总之,除非你有更高级别的缓存,否则它不是缓存。而且我没有足够的信息告诉你它是什么。

我发现了问题!当我复制表时,我对其中一个外键关系有一个
@NotNull
约束,但没有创建相应的记录。

这是有道理的,在查看之后,我必须同意。如果执行
lobbyRepository.findAll()
,我会找到所有记录,但如果执行
lobbyRepository.findOne(..)
则返回null。
@Query("SELECT lobby FROM Lobby lobby WHERE id = ?1)
public getOneById(Long id)