简体   繁体   中英

How to using JPQL to join two tables

I made employee table and position table.Every Employees have one position.I want join two table ,but I don't know how to write code.

Employee.java

@Table(name = "employees")
@NamedQueries({
        @NamedQuery(name = "getAllEmployees", query = "SELECT e FROM Employee AS e ORDER BY e.emp_id DESC")
})
@Entity
public class Employee {
    @Id
    @Column(name = "emp_id", length = 8)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer emp_id;

    @Column(name = "emp_name", length = 20, nullable = false)
    private String emp_name;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinTable(name = "position", joinColumns = {
            @JoinColumn(name = "emp_id", referencedColumnName = "emp_id") }, inverseJoinColumns = {
                    @JoinColumn(name = "pos_id", referencedColumnName = "pos_id") })
    private Position pos;
    
    ~setter/getter~

Position.java

@Table(name = "position")

@Entity
public class Position {
    @Id
    @Column(name = "pos_id")
    private Integer pos_id;

    @Column(name = "pos_name", length = 30, nullable = false)
    private String pos_name;

    @OneToOne(mappedBy = "pos")
    private Employee employee;
    
    ~setter/getter~
Employee.java
@Entity
public class Employee {
    @Id
    @Column(name = "emp_id", length = 8)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer emp_id;

    @Column(name = "emp_name", length = 20, nullable = false)
    private String emp_name;

    @ManyToOne
    private Position position;
Position.java
@Entity
public class Position {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int pos_id;

    @Column(name = "pos_name", length = 16)
    private String pos_name;

    @OneToMany(mappedBy = "position")
    private List<Employee> employees;

Thank you.I can join two tables!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM