那你的PK是谁?
id + name + sex?
id?
name + sex?

解决方案 »

  1.   

    其实既然name + sex是唯一的就可以不要ID这个pk了,那么就用复合主键<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping    PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>    <class name="onlyfun.caterpillar.User" table="user">        <composite-id>            <key-property name="name"                          column="name"                          type="java.lang.String"/>            <key-property name="sex"                          column="sex"                          type="java.lang.String"/>        </composite-id>    </class></hibernate-mapping>并且定义的User类要覆盖equals和hashCode方法public boolean equals(Object obj) {
            if(obj == this) {
                return true;
            }
            if(!(obj instanceof User)) {
                return false;
            }
            User user = (User) obj;
            return new EqualsBuilder()
                     .append(this.name, user.getName())
                     .append(this.sex, user.getSex())
                     .isEquals();
        }
        public int hashCode() {
            return new HashCodeBuilder()
                     .append(this.name)
                     .append(this.sex)
                     .toHashCode();
        }