Java 如何为多个表编写HQL连接查询';在Select子句中使用构造函数设置选定的列
我正在使用Select子句中的Java 如何为多个表编写HQL连接查询';在Select子句中使用构造函数设置选定的列,java,mysql,hibernate,orm,hql,Java,Mysql,Hibernate,Orm,Hql,我正在使用Select子句中的Constructor()为多个表的选定列编写HQL连接查询 我有以下实体: 实体1:NotificationObject.java @Entity @Table(name="notification_object") public class NotificationObject implements Serializable { private static final long serialVersionUID = 1L; @Id
Constructor()
为多个表的选定列编写HQL连接查询
我有以下实体:
实体1:NotificationObject.java
@Entity
@Table(name="notification_object")
public class NotificationObject implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy=GenerationType.IDENTITY )
@Column( columnDefinition="INT(10) UNSIGNED" )
private Integer id;
@Column( name="entity_type_id", columnDefinition="TINYINT UNSIGNED", nullable=false )
private Short entityTypeId;
@Column( name="entity_id", columnDefinition="INT(10) UNSIGNED", nullable=false )
private Integer entityId;
@DateTimeFormat( pattern="yyyy-MM-dd" )
@Temporal( TemporalType.TIMESTAMP )
@CreationTimestamp
@Column( name="created_on"/*, nullable=false*/ )
private Date createdOn;
@OneToMany( mappedBy = "notificationObject" )
private Set<Notification> notifications = new LinkedHashSet<>();
public NotificationObject() {}
public NotificationObject(Short entityTypeId, Integer entityId) {
this.entityTypeId = entityTypeId;
this.entityId = entityId;
}
// Getters and Setters
}
@Entity
@Table(name="notification_change")
public class NotificationChange implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(columnDefinition="INT(10) UNSIGNED")
private Integer id;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notification_object_id", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_change_notification_object_noti_object_id")
)
private NotificationObject notificationObject;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(
name="actor_id", columnDefinition="INT(10) UNSIGNED", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_change_user_user_id")
)
private User actor;
public NotificationChange() {}
public NotificationChange( User actor ) {
this.actor = actor;
}
// Getters and Setters
}
@Entity
@Table(name="notification")
public class Notification implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy=GenerationType.IDENTITY )
@Column( columnDefinition="INT(10) UNSIGNED" )
private Integer id;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notification_object_id", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_notification_object_notification_object_id")
)
private NotificationObject notificationObject;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notifier_id", columnDefinition="INT(10) UNSIGNED", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_user_user_id")
)
private User notifier;
@Column( name="is_seen", nullable=false )
private boolean isSeen;
@Column( name="is_viewed", nullable=false )
private boolean isViewed;
public Notification() {}
public Notification( User notifier, boolean isSeen, boolean isViewed ) {
this.notifier = notifier;
this.isSeen = isSeen;
this.isViewed = isViewed;
}
// Getters and Setters
}
@Entity
@Table(name="user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_id")
private String user_id;
// Extra fields
@OneToOne(cascade=CascadeType.MERGE)
@JoinColumn(name="emp_id", columnDefinition="INT(10) UNSIGNED")
private Employee employee;
@OneToMany( mappedBy="notifier" )
private Set<Notification> notifications = new LinkedHashSet<>();
public User() {}
public User(String user_id) {
this.user_id = user_id;
}
// Getters and Setters
}
@Entity
@Table(name="employee")
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
public Employee() { }
public Employee( String emp_id ) {
this.emp_id = emp_id;
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="emp_id")
private String emp_id;
@Column(name="first_name")
private String first_name;
@Column(name="last_name")
private String last_name;
// Extra fields
@OneToOne(mappedBy="employee")
@JsonBackReference
private User user;
// Getters and Setters
}
public class Notify {
private Integer notificationObjectId, notificationId, notifierId, actorId, entityId;
private Short entityTypeId;
private String notifierName, actorName, message, notificationLink;
private Date createdOn;
private boolean isSeen, isViewed;
public Notify() {}
public Notify ( Integer notificationObjectId, Integer notificationId, Integer notifierId, Integer actorId,
Integer entityId, Short entityTypeId, String notifierName, String actorName, String message,
String notificationLink, Date createdOn, boolean isSeen, boolean isViewed ) {
// Set Values Here
}
public Notify (Integer notificationObjectId, Integer notificationId, Integer notifierId, String notifierName,
Integer actorId, String actorName, Integer entityId, Short entityTypeId,
Date createdOn, boolean isSeen, boolean isViewed ) {
// Or Here
}
// Getters and Setters
}
实体3:Notification.java
@Entity
@Table(name="notification_object")
public class NotificationObject implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy=GenerationType.IDENTITY )
@Column( columnDefinition="INT(10) UNSIGNED" )
private Integer id;
@Column( name="entity_type_id", columnDefinition="TINYINT UNSIGNED", nullable=false )
private Short entityTypeId;
@Column( name="entity_id", columnDefinition="INT(10) UNSIGNED", nullable=false )
private Integer entityId;
@DateTimeFormat( pattern="yyyy-MM-dd" )
@Temporal( TemporalType.TIMESTAMP )
@CreationTimestamp
@Column( name="created_on"/*, nullable=false*/ )
private Date createdOn;
@OneToMany( mappedBy = "notificationObject" )
private Set<Notification> notifications = new LinkedHashSet<>();
public NotificationObject() {}
public NotificationObject(Short entityTypeId, Integer entityId) {
this.entityTypeId = entityTypeId;
this.entityId = entityId;
}
// Getters and Setters
}
@Entity
@Table(name="notification_change")
public class NotificationChange implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(columnDefinition="INT(10) UNSIGNED")
private Integer id;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notification_object_id", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_change_notification_object_noti_object_id")
)
private NotificationObject notificationObject;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(
name="actor_id", columnDefinition="INT(10) UNSIGNED", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_change_user_user_id")
)
private User actor;
public NotificationChange() {}
public NotificationChange( User actor ) {
this.actor = actor;
}
// Getters and Setters
}
@Entity
@Table(name="notification")
public class Notification implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy=GenerationType.IDENTITY )
@Column( columnDefinition="INT(10) UNSIGNED" )
private Integer id;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notification_object_id", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_notification_object_notification_object_id")
)
private NotificationObject notificationObject;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notifier_id", columnDefinition="INT(10) UNSIGNED", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_user_user_id")
)
private User notifier;
@Column( name="is_seen", nullable=false )
private boolean isSeen;
@Column( name="is_viewed", nullable=false )
private boolean isViewed;
public Notification() {}
public Notification( User notifier, boolean isSeen, boolean isViewed ) {
this.notifier = notifier;
this.isSeen = isSeen;
this.isViewed = isViewed;
}
// Getters and Setters
}
@Entity
@Table(name="user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_id")
private String user_id;
// Extra fields
@OneToOne(cascade=CascadeType.MERGE)
@JoinColumn(name="emp_id", columnDefinition="INT(10) UNSIGNED")
private Employee employee;
@OneToMany( mappedBy="notifier" )
private Set<Notification> notifications = new LinkedHashSet<>();
public User() {}
public User(String user_id) {
this.user_id = user_id;
}
// Getters and Setters
}
@Entity
@Table(name="employee")
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
public Employee() { }
public Employee( String emp_id ) {
this.emp_id = emp_id;
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="emp_id")
private String emp_id;
@Column(name="first_name")
private String first_name;
@Column(name="last_name")
private String last_name;
// Extra fields
@OneToOne(mappedBy="employee")
@JsonBackReference
private User user;
// Getters and Setters
}
public class Notify {
private Integer notificationObjectId, notificationId, notifierId, actorId, entityId;
private Short entityTypeId;
private String notifierName, actorName, message, notificationLink;
private Date createdOn;
private boolean isSeen, isViewed;
public Notify() {}
public Notify ( Integer notificationObjectId, Integer notificationId, Integer notifierId, Integer actorId,
Integer entityId, Short entityTypeId, String notifierName, String actorName, String message,
String notificationLink, Date createdOn, boolean isSeen, boolean isViewed ) {
// Set Values Here
}
public Notify (Integer notificationObjectId, Integer notificationId, Integer notifierId, String notifierName,
Integer actorId, String actorName, Integer entityId, Short entityTypeId,
Date createdOn, boolean isSeen, boolean isViewed ) {
// Or Here
}
// Getters and Setters
}
实体4:User.java
@Entity
@Table(name="notification_object")
public class NotificationObject implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy=GenerationType.IDENTITY )
@Column( columnDefinition="INT(10) UNSIGNED" )
private Integer id;
@Column( name="entity_type_id", columnDefinition="TINYINT UNSIGNED", nullable=false )
private Short entityTypeId;
@Column( name="entity_id", columnDefinition="INT(10) UNSIGNED", nullable=false )
private Integer entityId;
@DateTimeFormat( pattern="yyyy-MM-dd" )
@Temporal( TemporalType.TIMESTAMP )
@CreationTimestamp
@Column( name="created_on"/*, nullable=false*/ )
private Date createdOn;
@OneToMany( mappedBy = "notificationObject" )
private Set<Notification> notifications = new LinkedHashSet<>();
public NotificationObject() {}
public NotificationObject(Short entityTypeId, Integer entityId) {
this.entityTypeId = entityTypeId;
this.entityId = entityId;
}
// Getters and Setters
}
@Entity
@Table(name="notification_change")
public class NotificationChange implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(columnDefinition="INT(10) UNSIGNED")
private Integer id;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notification_object_id", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_change_notification_object_noti_object_id")
)
private NotificationObject notificationObject;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(
name="actor_id", columnDefinition="INT(10) UNSIGNED", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_change_user_user_id")
)
private User actor;
public NotificationChange() {}
public NotificationChange( User actor ) {
this.actor = actor;
}
// Getters and Setters
}
@Entity
@Table(name="notification")
public class Notification implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy=GenerationType.IDENTITY )
@Column( columnDefinition="INT(10) UNSIGNED" )
private Integer id;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notification_object_id", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_notification_object_notification_object_id")
)
private NotificationObject notificationObject;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notifier_id", columnDefinition="INT(10) UNSIGNED", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_user_user_id")
)
private User notifier;
@Column( name="is_seen", nullable=false )
private boolean isSeen;
@Column( name="is_viewed", nullable=false )
private boolean isViewed;
public Notification() {}
public Notification( User notifier, boolean isSeen, boolean isViewed ) {
this.notifier = notifier;
this.isSeen = isSeen;
this.isViewed = isViewed;
}
// Getters and Setters
}
@Entity
@Table(name="user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_id")
private String user_id;
// Extra fields
@OneToOne(cascade=CascadeType.MERGE)
@JoinColumn(name="emp_id", columnDefinition="INT(10) UNSIGNED")
private Employee employee;
@OneToMany( mappedBy="notifier" )
private Set<Notification> notifications = new LinkedHashSet<>();
public User() {}
public User(String user_id) {
this.user_id = user_id;
}
// Getters and Setters
}
@Entity
@Table(name="employee")
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
public Employee() { }
public Employee( String emp_id ) {
this.emp_id = emp_id;
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="emp_id")
private String emp_id;
@Column(name="first_name")
private String first_name;
@Column(name="last_name")
private String last_name;
// Extra fields
@OneToOne(mappedBy="employee")
@JsonBackReference
private User user;
// Getters and Setters
}
public class Notify {
private Integer notificationObjectId, notificationId, notifierId, actorId, entityId;
private Short entityTypeId;
private String notifierName, actorName, message, notificationLink;
private Date createdOn;
private boolean isSeen, isViewed;
public Notify() {}
public Notify ( Integer notificationObjectId, Integer notificationId, Integer notifierId, Integer actorId,
Integer entityId, Short entityTypeId, String notifierName, String actorName, String message,
String notificationLink, Date createdOn, boolean isSeen, boolean isViewed ) {
// Set Values Here
}
public Notify (Integer notificationObjectId, Integer notificationId, Integer notifierId, String notifierName,
Integer actorId, String actorName, Integer entityId, Short entityTypeId,
Date createdOn, boolean isSeen, boolean isViewed ) {
// Or Here
}
// Getters and Setters
}
DTO 1:Notify.java
@Entity
@Table(name="notification_object")
public class NotificationObject implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy=GenerationType.IDENTITY )
@Column( columnDefinition="INT(10) UNSIGNED" )
private Integer id;
@Column( name="entity_type_id", columnDefinition="TINYINT UNSIGNED", nullable=false )
private Short entityTypeId;
@Column( name="entity_id", columnDefinition="INT(10) UNSIGNED", nullable=false )
private Integer entityId;
@DateTimeFormat( pattern="yyyy-MM-dd" )
@Temporal( TemporalType.TIMESTAMP )
@CreationTimestamp
@Column( name="created_on"/*, nullable=false*/ )
private Date createdOn;
@OneToMany( mappedBy = "notificationObject" )
private Set<Notification> notifications = new LinkedHashSet<>();
public NotificationObject() {}
public NotificationObject(Short entityTypeId, Integer entityId) {
this.entityTypeId = entityTypeId;
this.entityId = entityId;
}
// Getters and Setters
}
@Entity
@Table(name="notification_change")
public class NotificationChange implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(columnDefinition="INT(10) UNSIGNED")
private Integer id;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notification_object_id", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_change_notification_object_noti_object_id")
)
private NotificationObject notificationObject;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(
name="actor_id", columnDefinition="INT(10) UNSIGNED", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_change_user_user_id")
)
private User actor;
public NotificationChange() {}
public NotificationChange( User actor ) {
this.actor = actor;
}
// Getters and Setters
}
@Entity
@Table(name="notification")
public class Notification implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy=GenerationType.IDENTITY )
@Column( columnDefinition="INT(10) UNSIGNED" )
private Integer id;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notification_object_id", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_notification_object_notification_object_id")
)
private NotificationObject notificationObject;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notifier_id", columnDefinition="INT(10) UNSIGNED", nullable=false,
foreignKey=@ForeignKey(name="fk_notification_user_user_id")
)
private User notifier;
@Column( name="is_seen", nullable=false )
private boolean isSeen;
@Column( name="is_viewed", nullable=false )
private boolean isViewed;
public Notification() {}
public Notification( User notifier, boolean isSeen, boolean isViewed ) {
this.notifier = notifier;
this.isSeen = isSeen;
this.isViewed = isViewed;
}
// Getters and Setters
}
@Entity
@Table(name="user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_id")
private String user_id;
// Extra fields
@OneToOne(cascade=CascadeType.MERGE)
@JoinColumn(name="emp_id", columnDefinition="INT(10) UNSIGNED")
private Employee employee;
@OneToMany( mappedBy="notifier" )
private Set<Notification> notifications = new LinkedHashSet<>();
public User() {}
public User(String user_id) {
this.user_id = user_id;
}
// Getters and Setters
}
@Entity
@Table(name="employee")
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
public Employee() { }
public Employee( String emp_id ) {
this.emp_id = emp_id;
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="emp_id")
private String emp_id;
@Column(name="first_name")
private String first_name;
@Column(name="last_name")
private String last_name;
// Extra fields
@OneToOne(mappedBy="employee")
@JsonBackReference
private User user;
// Getters and Setters
}
public class Notify {
private Integer notificationObjectId, notificationId, notifierId, actorId, entityId;
private Short entityTypeId;
private String notifierName, actorName, message, notificationLink;
private Date createdOn;
private boolean isSeen, isViewed;
public Notify() {}
public Notify ( Integer notificationObjectId, Integer notificationId, Integer notifierId, Integer actorId,
Integer entityId, Short entityTypeId, String notifierName, String actorName, String message,
String notificationLink, Date createdOn, boolean isSeen, boolean isViewed ) {
// Set Values Here
}
public Notify (Integer notificationObjectId, Integer notificationId, Integer notifierId, String notifierName,
Integer actorId, String actorName, Integer entityId, Short entityTypeId,
Date createdOn, boolean isSeen, boolean isViewed ) {
// Or Here
}
// Getters and Setters
}
我在连接方面很弱。我想为实体的选定字段编写HQL JOIN查询,以在
Notify.java的Select子句中形成Constructor()
我所尝试的:
查询1
final String GET_NOTIFICATIONS_FOR_USER =
"select new support.dto.Notify ( no.id, n.id, Integer.parseInt( n.notifier.user_id ), "
+ "concat ( n.notifier.employee.first_name, ' ', n.notifier.employee.last_name ), "
+ "Integer.parseInt( nc.actor.user_id ), concat( nc.actor.employee.first_name, ' ', nc.actor.employee.last_name ), "
+ "no.entityId, no.entityTypeId, no.createdOn, n.isSeen, n.isViewed ) "
+ "from Notification n, NotificationObject no, NotificationChange nc, User u, Employee e "
+ "where n.notifier.user_id = :notifierId";
查询2
final String GET_NOTIFICATIONS_FOR_USER =
"select new support.dto.Notify ( no.id, n.id, Integer.parseInt( n.notifier.user_id ), "
+ "concat ( n.notifier.employee.first_name, ' ', n.notifier.employee.first_name ), "
+ "Integer.parseInt( nc.actor.user_id ), concat( nc.actor.employee.first_name, ' ', nc.actor.employee.last_name ), "
+ "no.entityId, no.entityTypeId, no.createdOn, n.isSeen, n.isViewed ) "
+ "from NotificationChange nc inner join nc.notificationObject no "
+ "inner join no.notifications n "
+ "where n.notifier.user_id = :notifierId";
我遇到以下异常情况
java.lang.NullPointerException
位于org.hibernate.internal.util.ReflectHelper.getConstructor(ReflectHelper.java:309)
位于org.hibernate.hql.internal.ast.tree.ConstructorNode.resolveConstructor(ConstructorNode.java:174)
在org.hibernate.hql.internal.ast.tree.ConstructorNode.prepare(ConstructorNode.java:144)上
位于org.hibernate.hql.internal.ast.hqlslwalker.processConstructor(hqlslwalker.java:1091)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2328)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:2194)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1476)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:573)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:262)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.docomFile(QueryTranslatorImpl.java:190)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:115)
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:76)
位于org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
位于org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:298)
位于org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
位于org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1821)
位于support.DAO.MasterDaoImpl.getNotifications(MasterDaoImpl.java:115)
位于support.service.masterserviceinpl.getNotifications(masterserviceinpl.java:158)
位于support.service.MasterServiceImpl$$FastClassBySpringCGLIB$$a355463b.invoke()
位于org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
位于org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:157)上
位于org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)上
位于org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
位于support.service.MasterServiceImpl$$EnhancerBySpringCGLIB$$8c2728e2.getNotifications()
在support.controller.WebSocketController.hello(WebSocketController.java:91)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:601)
位于org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:185)
位于org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:104)
位于org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMatch(AbstractMethodMessageHandler.java:447)
位于org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:443)
位于org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:82)
位于org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessageInternal(AbstractMethodMessageHandler.java:408)
位于org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessage(AbstractMethodMessageHandler.java:346)
位于org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:135)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
运行(Thread.java:722)
该错误告诉您Hibernate找不到Notify
构造函数
此外,不允许在HQL查询中添加Integer.parseInt
。使用ResultSet中的预期类型,并从传入参数在构造函数内部执行强制转换。我的查询正确吗?连接表(HQL连接)的正确方法是什么?我已经删除了Integer.parseInt()
,并在Notify Constructor()
中完成了强制转换,现在通过异常org.hibernate.TransactionException:unabl