java - 如何使用注释处理 Hibernate 和 Spring 中的连接查询?

标签 java spring hibernate join annotations

我正在使用 Spring 和 Hibernate 以及 MySQL 开发应用程序。我是 Hibernate 的新手并且完成了基本任务......

现在我需要在选择查询中应用联接,以使用注释从多个表中获取数据。我已经搜索过了,但我仍然没有任何想法......

这里是我的数据库表和 bean 类:

Table 1: 'employee_info' ( id, empid, empname, doj and jobtitle )

Table 2: 'employee_login' ( username, password, status and empid )

我的 bean 类是:

EmployeeInfoForm.java

@Entity()
@Table(name = "employee_info")
public class EmployeeInfoForm {

@Id
@GeneratedValue
@Column(name = "id", unique = true, nullable = true)
private int id;

@Column(name = "empId")
private int empId;

@Column(name = "empname")
private String empName;

@Column(name = "doj")
private Date empDoj;

@Column(name = "jobtitle")
private String empJobTitle;

public int getEmpId() {
    return empId;
}

public void setEmpId(int empId) {
    this.empId = empId;
}

public void setEmpDoj(Date empDoj) {
    this.empDoj = empDoj;
}

public String getEmpName() {
    return empName;
}

public void setEmpName(String empName) {
    this.empName = empName;
}

public Date getEmpDoj() {
    return empDoj;
}

public void setEmp_Doj(Date empDoj) {
    this.empDoj = empDoj;
}

public String getEmpJobTitle() {
    return empJobTitle;
}

public void setEmpJobTitle(String empJobTitle) {
    this.empJobTitle = empJobTitle;
}


}

EmployeeLoginForm.java

@Entity()
@Table(name = "employee_login")
public class EmployeeLoginForm {

@Id
@Column(name = "username")
private String empUserName;

@Column(name = "password")
private String empPassword;

@Column(name = "status")
private String empStatus;

@Column(name = "empid")
private int empId;

public String getEmpUserName() {
    return empUserName;
}

public int getEmpId() {
    return empId;
}

public void setEmpId(int empId) {
    this.empId = empId;
}

public void setEmpUserName(String empUserName) {
    this.empUserName = empUserName;
}

public String getEmpPassword() {
    return empPassword;
}

public void setEmpPassword(String empPassword) {
    this.empPassword = empPassword;
}

public String getEmpStatus() {
    return empStatus;
}

public void setEmpStatus(String empStatus) {
    this.empStatus = empStatus;
}

}

要求:

当两个表上的 empid 匹配...

请帮助我完成我的工作...

感谢任何建议和指导...

最佳答案

我在您的代码中没有看到 EmployeeInfoForm 和 EmployeeLoginForm 之间存在关联。也许那里有一个 Employee 类?如果是这种情况,那么您需要添加它。因此,让我们假设每个员工都有多种形式。然后,您将像这样对关系的员工端进行编码:

 public class Employee{

      @OneToMany(cascade = CascadeType.ALL, mappedBy = "employee")
      private Set<EmployeeLoginForm> loginForms = new HashSet<EmployeeLoginForm>();

      ...
 }

以及 EmployeeLoginForm 类中关系的多方:

 @ManyToOne
 Employee employee;

这将创建这样的表结构:

 emploee = (id, etc ...)
 employeelogin = (id, employee, ....)

现在,任何时候您需要一个员工的登录列表,您都可以从员工对象中获取它,而无需查询。

 Set<EmployeeLoginForm> logins = e.getLoginForms(); //where e is an employee object.

如果你确实想查询你可以做

 select o from EmployeeLoginForm o join o.employee

但在这种情况下这是不必要的。

关于java - 如何使用注释处理 Hibernate 和 Spring 中的连接查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15339446/

相关文章:

java - JTextArea setText() & UndoManager

java - 在java中使用itext格式化pdfptables

java - 将图像节点更改为另一个角

java - Spring AOP中拦截log4j2的ThreadContext around Advice

java - 无法确定 : java. util.List 的类型

java - 使用 DateTimeFormatter "hh:mm a"解析时间导致异常

java - 将参数传递给 TestNG 运行 - Gradle

spring - 属性 th :each is not allowed here(Error in Thymeleaf template)

java - Spring 5 至少必须存在一个 JPA 元模型

Java的ServiceLoader和测试资源