???
???????
???????
???????????
???????????
???????????
???????
???????
???
Hibernate中使用复合主键时需要注意一些规则:
1. 使用复合主键的实体类必须实现Serializable接口。
? 2.?使用复合主键的实体类必须重写equals和hashCode方法。
/*实体类,使用复合主键必须实现Serializable接口*/
public class People implements Serializable
{
? ?private static final long serialVersionUID = -4888836126783955019L;
? ?private String id;
? ?private String name;
? ?private int age;
? ?public People()
? ?{
? ?}
? ?public String getId()
? ?{
? ? ? ?return id;
? ?}
? ?public void setId(String id)
? ?{
? ? ? ?this.id = id;
? ?}
? ?public String getName()
? ?{
? ? ? ?return name;
? ?}
? ?public void setName(String name)
? ?{
? ? ? ?this.name = name;
? ?}
? ?public int getAge()
? ?{
? ? ? ?return age;
? ?}
? ?public void setAge(int age)
? ?{
? ? ? ?this.age = age;
? ?}
? ?@Override
? ?public int hashCode()
? ?{
? ? ? ?final int prime = 31;
? ? ? ?int result = 1;
? ? ? ?result = prime * result + ((id == null) ? 0 : id.hashCode());
? ? ? ?result = prime * result + ((name == null) ? 0 : name.hashCode());
? ? ? ?return result;
? ?}
? ?@Override
? ?public boolean equals(Object obj)
? ?{
? ? ? ?if (this == obj)
? ? ? ? ? ?return true;
? ? ? ?if (obj == null)
? ? ? ? ? ?return false;
? ? ? ?if (getClass() != obj.getClass())
? ? ? ? ? ?return false;
? ? ? ?People other = (People) obj;
? ? ? ?if (id == null)
? ? ? ?{
? ? ? ? ? ?if (other.id != null)
? ? ? ? ? ? ? ?return false;
? ? ? ?}
? ? ? ?else if (!id.equals(other.id))
? ? ? ? ? ?return false;
? ? ? ?if (name == null)
? ? ? ?{
? ? ? ? ? ?if (other.name != null)
? ? ? ? ? ? ? ?return false;
? ? ? ?}
? ? ? ?else if (!name.equals(other.name))
? ? ? ? ? ?return false;
? ? ? ?return true;
? ?}
}
hibernate配置文件,不是说必须配置主键的,而是为了使 程序中的 entity 映射到数据库对应的表,所以采用了.xml配置文件。所以,只要你的数据库表有主键,配置文件里面也就会有主键的
用联合主键的方式来配置
第一种方式class User{ String name; Stirng addr; int age; ..........}如果name和addr是联合主键,那么配置可以如下: