> For the complete documentation index, see [llms.txt](https://avbravo-2.gitbook.io/jmoordb/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://avbravo-2.gitbook.io/jmoordb/capitulo-4/introduccion-cap4/autoincrementable-secundarios.md).

# Autoincrementable secundarios

## Autoincrementables Secundarios

## El autoincrementable no es la llave primaria.

Definir un facade de autoincrementable, el entity autoincrementable, es parte de jmoordb.

## Entity

```
@Getter
@Setter
public class Color {

    @Id
    private String idcolor;
    private Integer autoincrementable;
    private String activo;

    @Embedded
    private List<UserInfo> userInfo;

    public Color() {
    }

    public Color(String idcolor, Integer autoincrementable, String activo) {
        this.idcolor = idcolor;
        this.autoincrementable = autoincrementable;
        this.activo = activo;
    }


}
```

## Formulario no se muestra

![](/files/-Lc1Wv0-gVhtQKxNswR3)

Listado

Se muestra el numero

![](/files/-Lc1Wv09Fylqv01fkF7G)

### save()

Se debe generar el autoincrementable

```
Optional<Autoincrementable> autoincrementableOptional = autoincrementableFacade.find(new Document("documento", "color"));
if (!autoincrementableOptional.isPresent()) {

Autoincrementable autoincrementable = new Autoincrementable("color", 0);
if (autoincrementableFacade.save(autoincrementable)) {
}
}
Autoincrementable autoincrementable = new Autoincrementable();
autoincrementable = autoincrementableFacade.findOneAndUpdate("documento", "color", "contador");
Integer id = autoincrementable.getContador();
color.setAutoincrementable(id);
```

#### CODIGO METHODO SAVE

```
 @Override
    public String save() {
        try {
            Optional<Color> optional = colorFacade.findById(color);
            if (optional.isPresent()) {
                JsfUtil.warningDialog(rf.getAppMessage("info.message"), rf.getAppMessage("warning.idexist"));
                return null;
            }

          Optional<Autoincrementable> autoincrementableOptional = autoincrementableFacade.find(new Document("documento", "color"));
            if (!autoincrementableOptional.isPresent()) {

                Autoincrementable autoincrementable = new Autoincrementable("color", 0);
                if (autoincrementableFacade.save(autoincrementable)) {
                }
            }

              Autoincrementable autoincrementable = new Autoincrementable();
        autoincrementable = autoincrementableFacade.findOneAndUpdate("documento", "color", "contador");
        Integer id = autoincrementable.getContador();
        color.setAutoincrementable(id);
            color.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
            if (colorFacade.save(color)) {
                JsfUtil.successMessage(rf.getAppMessage("info.save"));
                reset();
            } else {
                JsfUtil.successMessage("save() " + colorFacade.getException().toString());
            }

        } catch (Exception e) {
            JsfUtil.errorMessage("save()" + e.getLocalizedMessage());
        }
        return "";
    }// </editor-fold>
```
