Было бы хорошо, если бы предложение @JBNizet сработало.К сожалению, существует старая ошибка , которая делает невозможным ее принятие в версии, которую я использую (3.3.1-GA)
Я, наконец, разобрался с этим, определив внутреннийстатический идентификатор класса и использование его как @IdClass
:
@Entity
@Table(name="TABLE_AB")
@IdClass(value=ClassAB.ClassABId.class)
public class ClassAB implements Serializable {
private String idA;
private String idB;
@Id
public String getIdA(){ return idA; }
public void setIdA(String idA){ this.idA = idA; }
@Id
public String getIdB(){ return idB; }
public void setIdB(String idB){ this.idB = idB; }
static class ClassABId implements Serializable {
private String idA;
private String idB;
@Column(name="ID_A")
public String getIdA(){ return idA; }
public void setIdA(String idA){ this.idA = idA; }
@Column(name="ID_B")
public String getIdB(){ return idB; }
public void setIdB(String idB){ this.idB = idB; }
// HashCode(), equals()
}
}
Таким образом, мне не нужно определять новый открытый класс, и мне не нужно изменять файл сопоставлений, чтобы включить класс идентификатора.