Lista em java

PEssoal eu fiz uma lista onde eu tenho o id de servico e um id de uma ficha tecnica, onde vou adicionando servicos pra uma determinada ficha.
Estou com o seguinte problema a lista quando eu adiciono ele muda o id para o ultimo que adicionei exemplo:
Lanço um serviço ele vai muma boa
Quando lanço o segundo ele altera os 2 registro pro mesmos dados do ultimo que lancei, nao mantendo o primeiro adicionado antes.

Segue o codigo para quem puder me ajudar

 <p:outputPanel id="books">
                <p:dataTable value="#{fichaTecnicaHasServicoController.fichas}" var="fichas" id="fichas" update="fichaTecnica1">

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Cod. Ficha" />
                        </f:facet>
                        <h:outputText value="#{fichas.fichaTecnica}" />
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Serviço" />
                        </f:facet>
                        <h:outputText value="#{fichas.servico.nome}" />
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Quantidade" />
                        </f:facet>
                        <h:outputText value="#{fichas.quantidade}" />
                    </p:column>

                      <p:column>
                        <f:facet name="header">
                            <h:outputText value="Preço" />
                        </f:facet>
                          <h:outputText value="#{fichas.preco}" />
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Total" />
                        </f:facet>
                        <h:outputText value="#{fichas.preco * fichas.quantidade}" />
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Operation" />
                        </f:facet>
                        <p:commandLink value="Remove" update="form:books" process="@this">
                            <p:collector value="#{fichas}"
                                         removeFrom="#{fichaTecnicaHasServicoController.fichas}" />
                        </p:commandLink>
                    </p:column>
                    <p:columnGroup type="footer">
                        <p:row>
                            <p:column colspan="3" footerText="Total:"
                                      style="text-align:right"  />

                            <p:column footerText="#{fichaTecnicaHasServicoController.lastYearTotal}R$" />

                            <p:column footerText="#{fichaTecnicaHasServicoController.thisYearTotal}R$" />
                        </p:row>
                    </p:columnGroup>
                </p:dataTable>
                <p:commandButton id="btnSalvar" value="SALVAR" actionListener="#{fichaTecnicaHasServicoController.create1}" update="form" />
            </p:outputPanel>

Obrigado

Mas ele altera no banco de dados também?

eu ainda nao gravei em banco so estou carregando na memoria.

Como você está salvando em memória?

no controller eu criei 2 variaveis

private MateriaPrimaHasFichaTecnica ficha = new MateriaPrimaHasFichaTecnica();
private List fichas = new ArrayList();

depois eu faço assim

public void addFicha(){
fichas.add(ficha);

ai vou salvando cada item (ficha) em uma lista (fichas)

Bem, em algum lugar você está limpando esse pessoal da memória.

Onde você está a fazer esse new nas listas?