原因:org.hibernate.QueryException:无法解析属性:MovieVersionEntity的名称
电影实体:原因:org.hibernate.QueryException:无法解析属性:MovieVersionEntity的名称,hibernate,jpa,spring-boot,Hibernate,Jpa,Spring Boot,电影实体: @Entity(name="MovieEntity") @Table(name="Movie") public class MovieEntity { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="Id") private long id; @Column(name="IsDeleted") private boolean isDeleted;
@Entity(name="MovieEntity")
@Table(name="Movie")
public class MovieEntity {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="Id")
private long id;
@Column(name="IsDeleted")
private boolean isDeleted;
@Column(name="ModifiedDate")
private Date modifiedDate;
@OneToOne(optional = false)
@JoinColumn(name="MovieTypeId")
private MovieTypeEntity movieTypeEntity;
@OneToOne(mappedBy="movieEntity",optional = false)
private MovieVersionEntity movieVersionEntity;
getter and setter methods
}
电影类型实体:
@Entity(name = "MovieTypeEntity")
@Table(name = "MovieType")
public class MovieTypeEntity {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="MovieTypeId")
private int movieTypeId;
@Column(name="Type")
private String type;
@Column(name="IsDeleted")
private boolean isDeleted;
@OneToOne(mappedBy="movieTypeEntity",optional = false)
private MovieEntity movieEntity;
getter and setters.
}
电影版本名称:
@Entity(name = "MovieVersionEntity")
@Table(name="MovieVersion")
//@EntityListeners(AuditingEntityListener.class)
public class MovieVersionEntity {
@Id()
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="MovieId")
private long movieId;
@NotBlank
@Column(name="MovieName")
private String movieName;
@NotBlank
@Column(name="DirectorName")
private String directorName;
@NotBlank
@Column(name="Description")
private String description;
@Column(name="StopDate")
@Temporal(TemporalType.TIMESTAMP)
private Date endDate;
@Column(name="DoneWatching")
private boolean doneWatching;
@Column(name="WatchDate")
@Temporal(TemporalType.TIMESTAMP)
//@CreatedDate
private Date watchDate;
@Column(name="ModifiedDate")
@Temporal(TemporalType.TIMESTAMP)
//@LastModifiedDate
private Date modifiedDate;
@OneToOne(optional = false)
@JoinColumn(name="Id")
private MovieEntity movieEntity;
getter and setters
}
电影拍摄地点:
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.entertainment.entertainment.entity.MovieEntity;
@Repository
@Transactional(readOnly=true)
public interface MovieRepository extends org.springframework.data.repository.Repository<MovieEntity, Long> {
@Modifying
MovieEntity save(MovieEntity movieEntity);
@Query("Select me.id from MovieEntity me inner join fetch me.movieVersionEntity as mve where mve.name = :name " +
"and me.isDeleted = 0 and mve.endDate is null")
long doesMovieExistWithName(@Param("name") String name);
@Query("Select me from MovieEntity me inner join fetch me.movieVersionEntity as mve where me.id = :id and " +
"me.isDeleted=0 and mve.endDate is null")
Optional<MovieEntity> getMovie(@Param("id") long id);
@Query("Select me from MovieEntity me inner join fetch me.movieVersionEntity as mve where me.isDeleted=0 and mve.endDate is null")
List<MovieEntity> getMovies();
}
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.entertainment.entertainment.entity.MovieTypeEntity;
@Repository
@Transactional(readOnly=true)
public interface MovieTypeRepository extends org.springframework.data.repository.Repository<MovieTypeEntity, Integer> {
@Modifying
MovieTypeEntity save(MovieTypeEntity movieTypeEntity);
}
import java.util.List;
导入java.util.Optional;
导入org.springframework.data.jpa.repository.Modifying;
导入org.springframework.data.jpa.repository.Query;
导入org.springframework.data.repository.query.Param;
导入org.springframework.stereotype.Repository;
导入org.springframework.transaction.annotation.Transactional;
导入com.entertainment.entertainment.entity.MovieEntity;
@存储库
@事务(只读=真)
公共界面MovieRepository扩展org.springframework.data.repository.repository{
@修改
电影实体保存(电影实体电影实体);
@查询(“从MovieEntity me内部连接中选择me.id获取me.movieVersionEntity作为mve,其中mve.name=:name”+
“且me.isDeleted=0且mve.endDate为空”)
long doesmoviexistwithname(@Param(“name”)字符串名);
@查询(“从MovieEntity me内部连接中选择me fetch me.movieVersionEntity作为mve,其中me.id=:id和”+
“me.isDeleted=0且mve.endDate为空”)
可选的getMovie(@Param(“id”)长id);
@查询(“从MovieEntity me内部联接中选择me fetch me.movieVersionEntity作为mve,其中me.isDeleted=0且mve.endDate为空”)
列出getMovies();
}
MovieTypeRepository:
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.entertainment.entertainment.entity.MovieEntity;
@Repository
@Transactional(readOnly=true)
public interface MovieRepository extends org.springframework.data.repository.Repository<MovieEntity, Long> {
@Modifying
MovieEntity save(MovieEntity movieEntity);
@Query("Select me.id from MovieEntity me inner join fetch me.movieVersionEntity as mve where mve.name = :name " +
"and me.isDeleted = 0 and mve.endDate is null")
long doesMovieExistWithName(@Param("name") String name);
@Query("Select me from MovieEntity me inner join fetch me.movieVersionEntity as mve where me.id = :id and " +
"me.isDeleted=0 and mve.endDate is null")
Optional<MovieEntity> getMovie(@Param("id") long id);
@Query("Select me from MovieEntity me inner join fetch me.movieVersionEntity as mve where me.isDeleted=0 and mve.endDate is null")
List<MovieEntity> getMovies();
}
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.entertainment.entertainment.entity.MovieTypeEntity;
@Repository
@Transactional(readOnly=true)
public interface MovieTypeRepository extends org.springframework.data.repository.Repository<MovieTypeEntity, Integer> {
@Modifying
MovieTypeEntity save(MovieTypeEntity movieTypeEntity);
}
import org.springframework.data.jpa.repository.Modifying;
导入org.springframework.stereotype.Repository;
导入org.springframework.transaction.annotation.Transactional;
导入com.entertainment.entertainment.entity.MovieTypeEntity;
@存储库
@事务(只读=真)
公共界面MovieTypeRepository扩展了org.springframework.data.repository.repository{
@修改
MovieTypeEntity保存(MovieTypeEntity MovieTypeEntity);
}
MovieVersionRepository:
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.entertainment.entertainment.entity.MovieEntity;
@Repository
@Transactional(readOnly=true)
public interface MovieRepository extends org.springframework.data.repository.Repository<MovieEntity, Long> {
@Modifying
MovieEntity save(MovieEntity movieEntity);
@Query("Select me.id from MovieEntity me inner join fetch me.movieVersionEntity as mve where mve.name = :name " +
"and me.isDeleted = 0 and mve.endDate is null")
long doesMovieExistWithName(@Param("name") String name);
@Query("Select me from MovieEntity me inner join fetch me.movieVersionEntity as mve where me.id = :id and " +
"me.isDeleted=0 and mve.endDate is null")
Optional<MovieEntity> getMovie(@Param("id") long id);
@Query("Select me from MovieEntity me inner join fetch me.movieVersionEntity as mve where me.isDeleted=0 and mve.endDate is null")
List<MovieEntity> getMovies();
}
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.entertainment.entertainment.entity.MovieTypeEntity;
@Repository
@Transactional(readOnly=true)
public interface MovieTypeRepository extends org.springframework.data.repository.Repository<MovieTypeEntity, Integer> {
@Modifying
MovieTypeEntity save(MovieTypeEntity movieTypeEntity);
}
包com.entertainment.entertainment.repository
import com.entertainment.entertainment.entity.MovieVersionEntity;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
@Transactional(readOnly = true)
public interface MovieVersionRepository extends org.springframework.data.repository.Repository<MovieVersionEntity,Long> {
}
导入com.entertainment.entertainment.entity.MovieVersionEntity;
导入org.springframework.stereotype.Repository;
导入org.springframework.transaction.annotation.Transactional;
@存储库
@事务(只读=真)
公共界面MovieVersionRepository扩展了org.springframework.data.repository.repository{
}
错误:
Caused by: org.hibernate.QueryException: could not resolve property: name of: com.entertainment.entertainment.entity.MovieVersionEntity [Select me.id from com.entertainment.entertainment.entity.MovieEntity me inner join fetch me.movieVersionEntity as mve where mve.name = :name and me.isDeleted = 0 and mve.endDate is null]
at org.hibernate.QueryException.generateQueryException(QueryException.java:120) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:218) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1894) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
... 62 common frames omitted
Caused by: org.hibernate.QueryException: could not resolve property: name of: com.entertainment.entertainment.entity.MovieVersionEntity
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:62) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:56) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1805) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.tree.FromElementType.getPropertyType(FromElementType.java:393) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.tree.FromElement.getPropertyType(FromElement.java:505) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.tree.DotNode.getDataType(DotNode.java:660) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.tree.DotNode.prepareLhs(DotNode.java:264) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.tree.DotNode.resolve(DotNode.java:204) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:109) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:104) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:942) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1283) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4696) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:4166) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2131) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2056) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2056) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:810) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:605) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:309) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:257) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:262) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:190) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
... 70 common frames omitted
原因:org.hibernate.QueryException:无法解析属性:name of:com.entertainment.entity.MovieVersionEntity[从com.entertainment.entity.MovieEntity中选择me.id作为mve内部连接fetch me.MovieVersionEntity作为mve,其中mve.name=:name和me.isDeleted=0,mve.endDate为空]
在org.hibernate.QueryException.generateQueryException(QueryException.java:120)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.QueryTranslatorImpl.docomfile(QueryTranslatorImpl.java:218)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:115)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:76)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1894)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291)~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
... 省略了62个公共帧
原因:org.hibernate.QueryException:无法解析属性:名称:com.entertainment.entertainment.entity.MovieVersionEntity
在org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:62)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:56)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1805)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.tree.FromElementType.getPropertyType(FromElementType.java:393)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.tree.FromElement.getPropertyType(FromElement.java:505)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.tree.DotNode.getDataType(DotNode.java:660)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.tree.DotNode.prepareLhs(DotNode.java:264)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.tree.DotNode.resolve(DotNode.java:204)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:109)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:104)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hql.internal.ast.hqlslwalker.resolve(hqlslwalker.java:942)~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.hq