Boa tarde,
estou com um problema… Na verdade, não sei se é problema ainda.
Estamos desenvolvendo um sistema onde terá apenas uma base de dados na internet.
O cliente possui várias FILIAIS. Tudo bem até aí, devido as transacoes e tal.
Agoraa vem o problema: o cliente quer uma versão ‘local’ da base de dados, pois se a internet cair em uma das FILIAIS o sistema
possa continuar rodando. Viram só a merd@? Sincronização de base de dados !!!
Qual a solução que o pessoal da empresa quer adotar: criar uma chave composta para TODAS as tabelas, sendo:
ID + FILIAL. Assim, a dor de cabeça na hora de sincronizar será reduzida a ‘quase’ nula.
Ta legal… Mas eu tô usando JSF com primefaces, e fiz um MONTE de coisa genérica:
- Controller (managedBean na verdade)
- Service (layer, camada)
- Repository (Spring Data)
- LazyDataModel (Primefaces)
- Converter (JSF)
Esse aí é o meu primeiro problema, pois não sei se as coisas genéricas que eu fiz funcionariam com a chave composta.
Acho que não, porque por exemplo, neste trecho de código:
public T getRowData(String key) {
return getBaseService().findOne((PK) new SimpleTypeConverter().convertIfNecessary(key, ReflectUtil.getPrimaryKeyField(entityClass).getType()));
}
Aí, eu recebo do Primefaces uma String e preciso converter pra chave primaria da minha app…
Uso o Spring para converter para mim… E é claro que o Spring é ninja, mas não saberá converter para a minha classe de chave composta
(supondo que eu consiga criar uma genérica). Alguém vê alguma solução?
O segundo problema, é que ter uma classe de chave composta para cada caso seria uma merda né… Então, teria que pensar numa
solução tipo MappedSuperClass ou algo assim. Alguém conheçe algo do tipo? Alguma solução?
bom, é isso aí, se alguém tiver dicas sobre alternativas quanto a criação de chave composta (para facilitar a sincronização entre base local / web)
por favor ajudem também.
moderadores, sintam-se a vontade para mover o tópico caso não tenha postado no forum correto. Fiquei em dúvida onde postar 
Abraços