0

こんにちは、データベースの person テーブルに一意の姓と名を付けたいと考えています。人のための私の休止状態のxmlマップは

package com.me.POJO;

public class Person {

private int personId;
private String firstName;
private String lastName;
private String streetAddress;
private String aptNo;
private String city;
private int zipCode;

public Person(){}
public Person(String firstName, String lastName, String streetAddress,
String aptNo, String city, int zipCode) {
this.firstName = firstName;
this.lastName = lastName;
this.streetAddress = streetAddress;
this.aptNo = aptNo;
this.city = city;
this.zipCode = zipCode;
}

public int getPersonId() {
return personId;
}

public void setPersonId(int personId) {
this.personId = personId;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getStreetAddress() {
return streetAddress;
}

public void setStreetAddress(String streetAddress) {
this.streetAddress = streetAddress;
}

public String getAptNo() {
return aptNo;
}

public void setAptNo(String aptNo) {
this.aptNo = aptNo;
}

public String getCity() {
return city;
}

public void setCity(String city) {
this.city = city;
}

public int getZipCode() {
return zipCode;
}

public void setZipCode(int zipCode) {
this.zipCode = zipCode;
}

}

人のHibernate hbm.xmlファイルは次のとおりです。

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Apr 9, 2012 2:49:54 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.me.POJO.Person" table="Person">
<id name="personId" type="int">
<column name="personId_PK" />
<generator class="native"></generator>
</id>
<property name="aptNo" type="java.lang.String">
<column name="aptNo" />
</property>
<property name="city" type="java.lang.String">
<column name="city" />
</property>
<property name="firstName" type="java.lang.String">
<column name="firstName" />
</property>
<property name="lastName" type="java.lang.String">
<column name="lastName" />
</property>
<property name="streetAddress" type="java.lang.String">
<column name="streetAddress" />
</property>
<property name="zipCode" type="int">
<column name="zipCode" not-null="true" />
</property>
</class>
</hibernate-mapping>

データベース内で姓と名が一意になるように、hbm ファイルの人物マッピングに一意の制約を追加する方法はありますか?

よろしくお願いします。

4

1 に答える 1

0

last name要素を含んでfirst name使用する自然キーを作成できます<natural-id>

<natural-id>テーブル スキーマが Hibernate によって生成される場合、自然キー列に一意の制約を作成するのに役立つだけであることに注意してくださいhbm2ddl<natural-id>Hibernate は、実行時に列の一意性検証を行いません 。

したがって、Hibernate を使用してテーブル スキーマを再作成する予定がない場合は、DDL を使用してこれらの列に一意の制約を手動で追加し、データベースに一意性をチェックさせることができます。

于 2012-04-19T19:06:44.457 に答える