hibernate配置文件之自动创建表

对Java而言要识别两个对象是否为同一对象有两种方式
1.内存地址识别(“==”号识别)。
2.根据equals()、hashCode()中的定义识别。
在hibernate中,如果在同一session中根据相同查询所得到的相同记录,则它们会有相同的内存地址。但是如果是不同的session中查询的相同记录,它们的内存地址就会不同。因此,使用“==”来比较两条记录是否代表数据库中的同一记录是不可行的。如果有必要比较通过查询后的内容是否相同,必须重写equals()与hashCode()方法。
package com.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Student {
private int ID;
private String name;
private String gender;
private int age;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getID() {
    return ID;
}

public void setID(int iD) {
    ID = iD;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getGender() {
    return gender;
}

public void setGender(String gender) {
    this.gender = gender;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public Student() {
    super();
    // TODO Auto-generated constructor stub
}

@Override
public String toString() {
    return "Student [ID=" + ID + ", name=" + name + ", gender=" + gender + ", age=" + age + "]";
}

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = gender.hashCode() + name.hashCode();
    result = prime * age + result;
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Student other = (Student) obj;
    if (ID == other.ID && age == other.age && gender.equals(other.gender) && name.equals(other.name))
        return true;
    return false;
}

}

猜你喜欢

转载自blog.csdn.net/xuehangongzi/article/details/80669769
今日推荐