У меня проблема с моим пользовательским конвертером.
@FacesConverter(value = "converterObjet")
public class ConverterObjet implements Converter {
private static Map<Object, String> listObjet = new WeakHashMap<Object, String>();
@Override
public String getAsString(FacesContext context, UIComponent component, Object entity) {
synchronized (listObjet) {
if (!listObjet.containsKey(entity)) {
String uuid = UUID.randomUUID().toString();
listObjet.put(entity, uuid);
return uuid;
} else {
return listObjet.get(entity);
}
}
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String uuid) {
for (Entry<Object, String> entry : listObjet.entrySet()) {
if (entry.getValue().equals(uuid)) {
return entry.getKey();
}
}
return null;
}
проблема в статической карте.
как я использую схему для каждого арендатора
@Entity
@ Многоквартирный (MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator (type = TenantTableDiscriminatorType.SCHEMA, contextProperty = "tenant-id")
открытый класс Contry реализует Serializable {
hashCode () одинаков для всех контингентов арендаторов с одинаковым идентификатором
@Override
public int hashCode() {
// TODO Auto-generated method stub
final int prime = 31;
int hash = 17;
hash = hash * prime+ this.idpays.hashCode();
return hash;
}
Я использую конвертер на своих страницах XHTML, например:
<p:selectOneMenu widgetVar="wvCtrcdt" id="contry"
height="150" value="#{candidatView.contryChoosen}"
converter="converterObjet" filter="true">
<f:selectItem itemLabel="#{text['chxInit']}" itemValue=""></f:selectItem>
<f:selectItems value="#{contryView.listcontry}" var="contry"
itemLabel="#{contry.contryname}" itemValue="#{contry}"></f:selectItems>
<p:ajax update="PoBirth" />
</p:selectOneMenu>
contryChoosen, возвращаемый преобразователем, не принадлежит текущему арендатору, поскольку считается, что он уже существует на карте, поскольку у него тот же идентификатор страны первого арендатора.
вопрос в том, как настроить мой конвертер, чтобы он мог различать страну-арендатора, даже если у них одинаковый идентификатор?