其实我用得到的结果通过Entity
类(我不知道很多有关查询加入),但下面的表格不是从我的Entity
类创建(除meetingschedule) ,现在我想加入的表,我被困在获取结果 我的表如下:转换SQL JOIN查询HQL加入查询
mysql> desc meetingschedule;
+--------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------+----------------+
| meeting_id | int(11) | NO | PRI | NULL | auto_increment |
| meeting_date | date | YES | | NULL | |
| status | tinyint(1) | YES | | NULL | |
| client_id | int(10) unsigned | YES | MUL | NULL | |
| remark_id | int(10) unsigned | YES | MUL | NULL | |
+--------------+------------------+------+-----+---------+----------------+
13 rows in set (0.03 sec)
mysql> desc client;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| client_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| firm_name | varchar(90) | NO | | NULL | |
| is_active | char(1) | YES | | NULL | |
| parent_id | int(10) unsigned | YES | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
11 rows in set (0.01 sec)
mysql> desc client_city;
+-----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| client_id | int(10) unsigned | NO | MUL | NULL | |
| city_id | int(10) unsigned | NO | | NULL | |
+-----------+------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> desc client_domain;
+-----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| client_id | int(10) unsigned | NO | | NULL | |
| domain_id | int(10) unsigned | NO | | NULL | |
+-----------+------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
如何转换SQL加盟HQL?
我的SQL查询:
mysql> select a.* from meetingschedule a join client b on
a.client_id = b.client_id join client_city c on
b.client_id = c.client_id join client_domain d on
b.client_id = d.client_id where c.city_id=28 and d.domain_id=4;
UPDATE:
实体类
1 MeetingSchedule.java
@Entity
@Table(name="meetingschedule")
public class MeetingSchedule implements Serializable {
private static final long serialVersionUID = 1L;
public MeetingSchedule() {
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="meeting_id")
private Integer meetingId;
@ManyToOne
@JoinColumn(
name="client_id", columnDefinition="INT(10) UNSIGNED",
[email protected](name="fk_meetingschedule_client")
)
private Client client;
@Column(name="status", columnDefinition="TINYINT(1)")
private short status;
@Column(name="meeting_date")
@Temporal(TemporalType.DATE)
// @DateTimeFormat(pattern="yyyy-MM-dd")
private Date meetingDate;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="meeting_employee",
joinColumns={@JoinColumn(name="meeting_id")},
inverseJoinColumns={@JoinColumn(name="emp_id",columnDefinition="INT(10) UNSIGNED")},
[email protected](name="fk_meeting_employee_meetingschedule_meeting_id"),
[email protected](name="fk_meeting_employee_employee_emp_id")
)
private Set<Employee> employees = new HashSet<>();
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="meeting_part",
joinColumns={@JoinColumn(name="meeting_id")},
inverseJoinColumns={@JoinColumn(name="part_id",columnDefinition="INT(10) UNSIGNED")},
[email protected](name="fk_meeting_part_meetingschedule_meeting_id"),
[email protected](name="fk_meeting_part_part_mst_part_id")
)
private Set<Part> parts = new HashSet<>();
}
2. Client.java
@Entity
@Table(name="client")
public class Client implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="client_id")
private String client_id;
@Column(name="is_active")
private String is_active;
@Column(name="parent_id")
private String parent_id;
@JsonBackReference
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
private ClientCity clientCity;
@JsonBackReference
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
private ClientState clientState;
}
3 ClientCity
@Entity
@Table(name="client_city")
public class ClientCity implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator="fk_client_id")
@GenericGenerator(strategy="foreign", name="fk_client_id", [email protected](name="property", value="clientJoin"))
@Column(name="client_id")
private String client_id;
@Column(name="city_id")
private String city_id;
@OneToOne(mappedBy="clientCity")
private Client clientJoin;
}
4. ClientDomain
@Entity
@Table(name="client_domain")
@NamedQuery(name="ClientDomain.findAll", query="SELECT c FROM ClientDomain c")
public class ClientDomain implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name="client_id")
private int clientId;
@Column(name="domain_id")
private int domainId;
public ClientDomain() {
}
}
您是否为5个表创建了5个POJO类?发布它们以便我可以发布相关查询 – Akshay
是的,我有(4桌),好吧,我会,你需要等待, –
@Akshay我已经添加了实体类的代码片段 –