Mettendo il seriale sulla classe componente di conseguenza sarò obbligato ad avere più record che descrivono lo stesso componente (vendor, modello) usando poi il seriale per esprimere il fatto che sono installati in server diversi.
Giusto per spiegarmi in modo migliore, lo scenario da descrivere è questo:
Classe Server
-------------------
ID | Nome
1 | Server1
Classe Componente
--------------------------
ID | VENDOR | Description
1 | A-DATA | Modulo RAM DDR2
512 MB
Map_Server2Componente
----------------------------------
IdClass1|IdObj1|
IdClass2 | Seriale
Server | 1 | Componente | 1 | AAASDJSHSSAD
Server | 1 | Componente | 1 | ZAZAKANNAKNS
Il vantaggio di mettere il seriale nella relazione è che posso riutilizzare l'anagrafica del componente quante volte voglio senza creare troppi record inserendo più volte gli stessi dati.
Ho fatto come suggerito includendo l'Id nella chiave primaria della tabella di Map far le classi, ho usato
questo script:
ALTER TABLE "Map_computer2computer_component"
ADD CONSTRAINT "Map_computer2computer_component_pkey" PRIMARY KEY("IdDomain", "IdClass1", "IdObj1", "IdClass2", "IdObj2", "BeginDate","Id");
ma quando tento di aggiungere la seconda relazione ottengo l'errore riportato sotto. Mi scuso per la puntualizzazione ma ci tenevo a spiegare meglio il problema. Credo che l'inserimento dell'attributo seriale sulla relazione sia più che opportuno per rappresentare ciò che voglio.
Grazie di nuovo per il supporto.
Elia
org.cmdbuild.exception.ORMException: ORM_ERROR_RELATION_CREATE
at org.cmdbuild.exception.ORMException$ORMExceptionType.createException(ORMException.java:58)
at org.cmdbuild.dao.backend.postgresql.PGCMBackend.createRelation(PGCMBackend.java:1143)
at org.cmdbuild.elements.RelationImpl.create(RelationImpl.java:117)
at org.cmdbuild.elements.AbstractElementImpl.save(AbstractElementImpl.java:76)
at org.cmdbuild.elements.RelationImpl.save(RelationImpl.java:104)
at org.cmdbuild.elements.proxy.RelationForwarder.save(RelationForwarder.java:22)
at org.cmdbuild.elements.proxy.RelationProxy.save(RelationProxy.java:52)
at org.cmdbuild.servlets.json.management.ModCard.saveRelation(ModCard.java:785)
at org.cmdbuild.servlets.json.management.ModCard.createRelations(ModCard.java:749)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.cmdbuild.servlets.JSONDispatcher.dispatch(JSONDispatcher.java:94)
at org.cmdbuild.servlets.JSONDispatcher.doPost(JSONDispatcher.java:55)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:54)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)