КОМПОЗИТНЫЙ ID в спящем режиме

от

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html

Я не понимаю, как использовать тег «составной-идентификатор» без параметра «класс», и те несколько примеров, которые мне удалось сделать для Google, делают вещи еще более беспорядочными.

так что мой пример

<class name="mainPack.Point" table="POINT">
    <composite-id>
        <key-property name="x" type="int">
            <column name="X" />
        </key-property>
        <key-property name="y" type="int">
            <column name="Y" />
        </key-property>
    </composite-id>
    <property name="str" type="java.lang.String">
        <column name="STR" />
    </property>
</class>

Это будет работать?

Будут колонны

 <column name="X" />
 <column name="Y" /> 

присутствовать в таблице?

И будет ли создана другая таблица сопоставления, содержащая новый «id class» с двумя параметрами «X», «Y»?


person BiScOtTiNo    schedule 20.04.2015    source источник
comment
возможный дубликат составного ключа спящего режима   -  person Popandopolos    schedule 21.04.2015
comment
и если вы не заметили, что этот человек не принял ни одного ответа, в случае, если все они были похожи на удары капитана очевидного еще раз, они просто скопировали текст из справочного руководства, и поэтому я попытался быть более точным и спросил, где id-properties, и как будет разрешено дальнейшее сопоставление объектов   -  person BiScOtTiNo    schedule 21.04.2015


Ответы (1)


  1. # P1 #

да. Я использовал hibernate-update для создания таблицы, вот результат:

CREATE TABLE point
(
  x integer NOT NULL,
  y integer NOT NULL,
  str character varying(255),
  CONSTRAINT point_pkey PRIMARY KEY (x, y)
)

  1. Будут ли столбцы присутствовать в таблице?

Да. Вы можете увидеть это выше.

  1. И будет ли создана другая таблица сопоставления, содержащая новый «id class» с двумя параметрами «X», «Y»?

Нет.


Вот класс java:

public class Point implements Serializable {

private int x;
private int y;
private String str;

public int getX() {
    return this.x;
}

public void setX(int x) {
    this.x = x;
}

public int getY() {
    return this.y;
}

public void setY(int y) {
    this.y = y;
}

public String getStr() {
    return this.str;
}

public void setStr(String str) {
    this.str = str;
}

@Override
public int hashCode() {
    return new HashCodeBuilder().append(this.x).append(this.y).toHashCode();
}

@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }

    if (!(obj instanceof Point)) {
        return false;
    }

    Point other = (Point) obj;

    return (this.getX() == other.getX()) && (this.getY() == other.getY());
}

}

person Popandopolos    schedule 22.04.2015