如何使用构造函数在选择子句中为多个表的选定列编写HQL JOIN查询
发布时间:2021-01-19 00:34:17 所属栏目:MsSql教程 来源:网络整理
导读:副标题#e# 我正在使用Constructor()在Select子句中为多个表的选定列编写HQL JOIN查询 我有以下实体: 实体1:NotificationObject.java @Entity@Table(name="notification_object")public class NotificationObject implements Serializable { private stati
|
副标题[/!--empirenews.page--]
我正在使用Constructor()在Select子句中为多个表的选定列编写HQL JOIN查询 我有以下实体: 实体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
}
实体2:NotificationChange.java @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",foreignKey=@ForeignKey(name="fk_notification_change_user_user_id")
)
private User actor;
public NotificationChange() {}
public NotificationChange( User actor ) {
this.actor = actor;
}
// Getters and Setters
}
实体3:Notification.java @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",foreignKey=@ForeignKey(name="fk_notification_notification_object_notification_object_id")
)
private NotificationObject notificationObject;
@ManyToOne( fetch=FetchType.LAZY )
@JoinColumn(
name="notifier_id",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
}
实体4:User.java @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
}
实体5:Employee.java @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
}
DTO 1:Notify.java 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 isViewed ) {
// Set Values Here
}
public Notify (Integer notificationObjectId,boolean isViewed ) {
// Or Here
}
// Getters and Setters
}
我在JOINs很弱. (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读

