无法使用 graphql-spring 初始化代理
Posted
技术标签:
【中文标题】无法使用 graphql-spring 初始化代理【英文标题】:Could not initialize proxy with graphql-spring 【发布时间】:2019-02-04 04:36:52 【问题描述】:我正在使用:graphql-spring-boot 和 graphql-java-tools 来实现。
movie.graphqls
type Movie
id: Short
name: String
poster: String
releaseDate: String
runtime: String
storyline: String
rated: String
rating: String
inserted: String
type Query
movies: [Movie]
movie(id: ID!): Movie
电影模型
@Entity
public class Movie
private Short id;
private String name;
private String poster;
private Date releaseDate;
private Time runtime;
private String storyline;
private String rated;
private double rating;
private Timestamp inserted;
如您所见,我与其他模特没有任何关系。 最后是实现 GraphQLQueryResolver
的类@Component
public class Query implements GraphQLQueryResolver
@Autowired
private MovieRepository movieRepository;
public List<Movie> movies()
return this.movieRepository.findAll();
public Movie movie(Short id)
return this.movieRepository.getOne(id);
以下查询工作正常:
movies
name
rating
但是这个查询:
movie(id: 1)
name
给我以下错误:
获取数据时出现异常 (/movie/rated):无法初始化代理 [com.example.demo.model.Movie#1] - 无会话
【问题讨论】:
不是同一个问题。那个问题的问题是模型之间的关系,这里我没有关系! 【参考方案1】:尝试将getOne
更改为findOne
public Movie movie(Short id)
return this.movieRepository.findOne(id);
我认为使用getOne
需要调用在事务上下文中。因此出现错误 - 没有会话。
【讨论】:
遇到了同样的问题,我花了 2 个小时试图解决我遇到的实际问题,你救了我,谢谢!永远不会猜到 getById 与 findById 不同。【参考方案2】:您需要在配置文件application.properties
中添加策略的命名hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
【讨论】:
无法解析配置属性“hibernate.ejb.naming_strategy”。以上是关于无法使用 graphql-spring 初始化代理的主要内容,如果未能解决你的问题,请参考以下文章
无法懒惰地初始化角色集合,..无法初始化代理 - 无会话 - JPA + SPRING
JsonMappingException:无法初始化代理 - 没有会话
Hibernate 无法懒惰地初始化角色集合 无法初始化代理 - 没有会话
JPA LazyInitialisationException - 无法初始化代理
Spring Boot 中的 Hibernate 无法懒惰地初始化角色集合,无法初始化代理 - 没有 Session 异常