¿Como crear un correlativo con JPA?
Buenas estoy trabajando con NetBeans Platform creando un sistema de Control de Almacen tengo la siguiente tabla:
`codClasifP` char(6) NOT NULL,
`descClasifP` varchar(45) DEFAULT NULL,
`modeloClasifP` varchar(30) DEFAULT NULL,
`marcClasifP` varchar(25) DEFAULT NULL,
`clasifContClasifP` char(7) DEFAULT NULL,
`grpMatClasifP` char(2) DEFAULT NULL,
`descGrpClasifP` varchar(40) DEFAULT NULL,
`clasMatClasifP` varchar(30) DEFAULT NULL,
`nroCorrelClasifP` char(4) DEFAULT NULL,
`clasifGcialClasifP` varchar(9) DEFAULT NULL,
PRIMARY KEY (`codClasifP`),
UNIQUE KEY `codClasifP_UNIQUE` (`codClasifP`),
UNIQUE KEY `nroCorrelClasifP_UNIQUE` (`nroCorrelClasifP`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Como veran el PK es codClasifP y el numero correlativo que deseo es "nroCorrelClasifP". Digamos que mi cod = 12 quiero crear un correlativo que empieze en 400__, si registro un producto el correlativo deberia ser 40001, creo otro producto y deberia ser 40002 y asi sucesivamente.
Este es el codigo de mi DataModel:
@SuppressWarnings("unchecked")
public static List<MaClasifProd> getClasifP(){
Installer.EM.getTransaction().begin();
Query q = Installer.EM.createQuery("SELECT m FROM MaClasifProd m");
List<MaClasifProd> list = q.getResultList();
Installer.EM.getTransaction().commit();
return list;
}
//-----No estoy seguro si esto funcionara
//@SuppressWarnings("unchecked")
//public static List<MaClasifProd> getCorrelClasifP(){
// Installer.EM.getTransaction().begin();
// Query q = Installer.EM.createQuery("SELECT nroCorrelClasifP FROM MaClasifProd ORDER BY nroCorrelClasifP desc limit 1");
// List<MaClasifProd> correl = q.getResultList();
// Installer.EM.getTransaction().commit();
// return correl;
//}
public static void updateClasifP(MaClasifProd maClasifProd){
Installer.EM.getTransaction().begin();
Installer.EM.persist(maClasifProd);
Installer.EM.getTransaction().commit();
}
public static void insertClasifP(MaClasifProd maClasifProd){
updateClasifP(maClasifProd);
}
public static void deleteClasifP(MaClasifProd maClasifProd){
Installer.EM.getTransaction().begin();
Installer.EM.remove(maClasifProd);
Installer.EM.getTransaction().commit();
}
}
Y este es el codigo de mi JFrame por decir, en mi caso como trabajo con NetBeans Platform para mi seria mi Window:
private ClasificTableModel model = new ClasificTableModel();
public ClasifacionProductosTopComponent() {
initComponents();
setName(Bundle.CTL_ClasifacionProductosTopComponent());
setToolTipText(Bundle.HINT_ClasifacionProductosTopComponent());
tblClasifP.setModel(model);
}
//------------METODOS-----------------
private void verClasifPActionPerformed(java.awt.event.ActionEvent evt){
if(tblClasifP.getSelectedRowCount()>0){
MaClasifProd maClasifProd = ClasificacionVentanaDialog.verClasifP(model.getRow(tblClasifP.getSelectedRow()));
if(maClasifProd != null){
DataModel.updateClasifP(maClasifProd);
model.fireTableDataChanged();
}
}
tblClasifP.requestFocus();
}
//--------FIN DE LOS METODOS---------
private void btnIngresarActionPerformed(java.awt.event.ActionEvent evt) {
MaClasifProd maClasifProd = ClasificacionVentanaDialog.newClasifP();
try {
if(maClasifProd != null){
DataModel.insertClasifP(maClasifProd);
model.getData().add(maClasifProd);
model.fireTableDataChanged();
}
} catch (Exception e) {
}
//Devolvemos el foco a la tabla
tblClasifP.requestFocus();
//areasRes.getRowCount()-1 --> Para indicar que es la
//ultima fila ingresada
tblClasifP.changeSelection(tblClasifP.getRowCount()-1, 0, false, false);
}
private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {
if(tblClasifP.getSelectedRowCount() > 0){
try {
MaClasifProd maClasifProd = ClasificacionVentanaDialog.editClasifP(model.getRow(tblClasifP.getSelectedRow()));
if(maClasifProd != null){
DataModel.updateClasifP(maClasifProd);
model.fireTableDataChanged();
} else {
JOptionPane.showMessageDialog(null, "Error");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error al modificar");
}
}
tblClasifP.requestFocus();
//areasRes.changeSelection(areasRes.getRowCount()-1, 0, false, false);
}
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {
try {
if(tblClasifP.getSelectedRowCount() > 0){
MaClasifProd maClasifProd = model.getRow(tblClasifP.getSelectedRow());
DataModel.deleteClasifP(maClasifProd);
model.getData().remove(maClasifProd);
model.fireTableDataChanged();
}
System.out.println("Eliminacion satisfactoria");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error al eliminar");
}
tblClasifP.requestFocus();
}
@Override
public void componentOpened() {
// TODO add custom code on component opening
model.getData().clear();
model.getData().addAll(DataModel.getClasifP());
model.fireTableDataChanged();
}
@Override
public void componentClosed() {
// TODO add custom code on component closing
}
void writeProperties(java.util.Properties p) {
// better to version settings since initial version as advocated at
// <a href="http://wiki.apidesign.org/wiki/PropertyFiles
" title="http://wiki.apidesign.org/wiki/PropertyFiles
">http://wiki.apidesign.org/wiki/PropertyFiles
</a> p.setProperty("version", "1.0");
// TODO store your settings
}
void readProperties(java.util.Properties p) {
String version = p.getProperty("version");
// TODO read your settings according to their version
}
private static final class ClasificTableModel extends AbstractTableModel{
private String[] columns = {"Código", "Descripción","GP","Corr","Cla.Con","Clase Material"};
private List<MaClasifProd> data = new ArrayList<MaClasifProd>();
public MaClasifProd getRow(int row){
return data.get(row);
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return columns.length;
}
@Override
public String getColumnName(int col){
return columns[col];
}
@Override
public Object getValueAt(int row, int col) {
MaClasifProd maClasifP = data.get(row);
switch(col){
case 0: return maClasifP.getCodClasifP();
case 1: return maClasifP.getDescClasifP();
case 2: return maClasifP.getGrpMatClasifP();
case 3: return maClasifP.getNroCorrelClasifP();
case 4: return maClasifP.getClasifContClasifP();
case 5: return maClasifP.getClasMatClasifP();
}
return "";
}
public List<MaClasifProd> getData(){
return data;
}
}
Me gustaria saber como crear el correlativo en Persistencias(JPA). Anteriormente ya cree en correlativos pero en Eclipse sin persistencias.
try{
Statement stmt=proy.con.con.createStatement();
ResultSet rs=stmt.executeQuery("select codProducto from producto order by codProducto desc limit 1");
while(rs.next()){
int codigo=rs.getInt("codProducto")+1;
txtCodigo.setText(""+codigo);
}
}catch(SQLException e){}
}
- Inicie sesión o regístrese para enviar comentarios
Comentarios recientes
hace 7 semanas 4 días
hace 1 año 19 semanas
hace 1 año 23 semanas
hace 1 año 30 semanas
hace 1 año 38 semanas
hace 1 año 41 semanas
hace 1 año 43 semanas
hace 1 año 46 semanas
hace 1 año 46 semanas
hace 2 años 1 día