Я пытаюсь заставить мой кодировщик значений гобелена работать с составным ключом гибернации. У меня есть следующий код, и я пытаюсь получить составной идентификатор и передать его интерфейсу, где он позже может быть отправлен обратно на сервер для декодирования обратно в объект.
@Embeddable
public class IfasvVendorPK implements Serializable{
@Column(length = 4, nullable = false)
protected String peId;
@Column(length = 8, nullable = false)
protected String peAddrCd;
public IfasvVendorPK() {
}
public IfasvVendorPK(String peId, String peAddrCd) {
this.peId = peId;
this.peAddrCd = peAddrCd;
}
// equals, hashCode
}
@Entity
public class IfasvVendor implements Serializable {
@EmbeddedId
private IfasvVendorPK ifasvVendorPK;
//...
}
Ниже приведен мой кодировщик значений. ToClient - это то, где мне нужно отправить составной ключ к интерфейсу. Я не уверен, как получить составной ключ.
@SuppressWarnings("unchecked")
public LabelAwareValueEncoder getEncoderVendor() {
return new LabelAwareValueEncoder<IfasvVendor>() {
public String toClient(IfasvVendor value) {
return value.getIfasvVendorPK().toString();
}
public IfasvVendor toValue(String clientValue) {
if (clientValue.isEmpty()) {
return null;
}
return (IfasvVendor) session.get(IfasvVendor.class, clientValue);
}
public String getLabel(IfasvVendor value) {
return value.getPeNameU();
}
};
}
Если бы кто-то мог помочь мне лучше понять, как работать с составным ключом, чтобы я мог заставить работать мой кодировщик значений, это было бы очень полезно. Заранее спасибо.