我是Hibernate和Criteria Query的新手。 如何使用休眠条件对象实现它?
SELECT stateslocalization.StateId,stateslocalization.localization AS name
FROM processstate
Join states ON states.id = processstate.StateId
JOIN stateslocalization ON stateslocalization.StateId = states.id
WHERE processstate.ProcessId = 38 and processstate.StateId = states.id AND stateslocalization.StateId = states.id
实体:
过程:
@Entity
@Table(name = "processes")
public class Process {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
@ManyToMany(fetch = FetchType.EAGER,cascade = CascadeType.PERSIST)
@JoinTable(
name = "processstate",joinColumns = {@JoinColumn(name = "ProcessId")},inverseJoinColumns = {@JoinColumn(name = "StateId")}
)
private Set<State> states;
//getters and setters.....
}
状态:
@Entity
@Table(name = "states")
public class State {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
private String name;
@ManyToMany(mappedBy = "states",cascade = CascadeType.PERSIST,fetch = FetchType.EAGER)
private Set<Process> processes;
@OneToOne(mappedBy = "state")
private StateLocalization stateLocalization;
//getters and setters.....
}
StateLocalization:
@Entity
@Table(name = "stateslocalization")
public class StateLocalization {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "StateId",referencedColumnName = "id")
private State state;
private String localization;
//getters and setters.....
}
我是用本机查询完成的,但是我不知道如何将其实现到Hibernate Criteria,因为我没有实体processstate(它只是表)。