ealah, kalo datanya salah yah jangan disimpan.
kalo maunya data yg salah gak disimpan, yah dirollback aja transaksinya.
kalo nyimpennya secara batch, yah data yg udah kesimpan gak usah disimpen lagi.


On Tue, Jun 16, 2009 at 4:46 PM, onsir salman<[email protected]> wrote:
>
>
> skenario lengkapnya
>
> Anal.java
> @Entity
> @Table(name="anal",
> uniqueConstraints = {...@uniqueconstraint(
> columnNames={"CODE_ANAL"})}
> )
> public class UserDefineAnalysis implements java.io.Serializable {
>
> @Id
> @GeneratedValue(generator="system-uuid")
> @GenericGenerator(name="system-uuid",strategy="uuid")
> @Column(name="ID_ANAL")
> private String idAnal;
>
> @Column(name="CODE_ANAL", nullable=false, unique=false, length=15)
> private String codeAnal;
>
> Jamsos.java
> @Entity
> @Table(name="jamsos",
> uniqueConstraints = {...@uniqueconstraint(
> columnNames={"CODE",
> "ID_ANAL"
> })}
> )
> public class SchemaJamsos implements java.io.Serializable{
>
> @Id
> @GeneratedValue(generator="system-uuid")
> @GenericGenerator(name="system-uuid",strategy="uuid")
> @Column(name="ID_JAMSOS")
> private String idJamsos;
>
> @Column(name="CODE", nullable=false, unique=false, length=15)
> private String code;
>
> @Column(name="RATE")
> private Float rate;
>
>
> @ManyToOne()
> @JoinColumn(name="ID_ANAL")
> private Anal anal;
> }
>
> AbstractJamsos.java
>
> protected void save(Object obj1) {
> startOperation();
> try {
> HibernateConnection.session.save(obj1);
> HibernateConnection.session.flush();
> HibernateConnection.session.clear();
> } catch (Exception e) {
> e.printStackTrace();
> tx.rollback();
> } finally {
> HibernateConnection.closeSession();
> }
> }
>
> protected void startOperation() throws HibernateException {
> HibernateConnection.getOpenSession();
> tx = HibernateConnection.session.beginTransaction();
> }
>
> JamsosDao.java
> public void save(Object obj){
> return super.save(obj);
> }
>
>
>
> cerita programnya:
> 1. tampilkan data dari tabel anal lalu tampilkan ke jTable1
> private void showJamsos() {
> List<Anal> list;
> try {
> list = analDao.getAll();
> int x = 0;
> Object[][] data = new Object[list.size()][9];
> for (Anal u : list) {
> data[x][0] = u.getIdAnal();
> data[x][1] = u.getCodeAnal();
> data[x][3] = "";
> data[x][4] = "0.0";
> ++x;
> }
> }
>
> hasil di jtable
> HASIL
>
> ID ANAL        CODE ANAL CHARGE RATE
> qwerty0001        J2              ME         0.0
> uipa0000se        J3              GS         0.0
> zxcvbu4210       J4              ME         0.0
>
>
> utk simpan data
> btnSimpan {
> for (int i = 0; i < jTable1.getRowCount(); i++) {
>
> anal = new Anal();
> anal.setIdAnal(jTable1.getValueAt(i, 0).toString());
>
> Jamsos j = new jamsos();
> schemaJamsos.setCode(txtKode.getText());
> schemaJamsos.setRate(Float.parseFloat(jTable1.getValueAt(i, 3).toString()));
> schemaJamsos.setAnal(anal);
> errSchema = schemaJamsosDao.update(schemaJamsos, action, onProcess);
> }
> }
>
> kejadianya, contoh
> ID ANAL          CODE ANAL CHARGE RATE
> qwerty0001        J2               ME         0.0
> uipa0000se        J3               GS          0.0 (saya input 4,5)
> zxcvbu4210       J4                ME          0.0
> lalu klik btnSimpan
> data akan error dan tampil pesan.
>
> java.lang.NumberFormatException: For input string: "4,5"
> at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
> at java.lang.Float.parseFloat(Float.java:422)
> at
> mst.pyrl.view.ui.datamaster.JIFSchemaJamsos.btnSimpanActionPerformed(JIFSchemaJamsos.java:365)
>
> lalu saya perbaiki datanya spt ini
> ID ANAL             CODE ANAL CHARGE RATE
> qwerty0001               J2              ME       0.0
> uipa0000se               J3              GS        4.5
> zxcvbu4210              J4              ME        0.0
>
> dan klik btnSimpan
> tampil error spt ini
>
> 2009-06-16 11:17:53,828 [AWT-EventQueue-0] ERROR
> org.hibernate.util.JDBCExceptionReporter Duplicate entry 'TRT01-qwerty0001'
> for key 2
> 2009-06-16 11:17:53,828 [AWT-EventQueue-0] ERROR
> org.hibernate.event.def.AbstractFlushingEventListener Could not synchronize
> database state with session
> org.hibernate.exception.ConstraintViolationException: Could not execute JDBC
> batch update
> at
> org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
> at
> org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
> at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
> at
> org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
> at
> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
> at
> mst.pyrl.hibernate.dao.hql.AbstractSchemaJamsosHql.save(AbstractSchemaJamsosHql.java:40)
> at mst.pyrl.hibernate.dao.SchemaJamsosDao.save(SchemaJamsosDao.java:26)
> at
> mst.pyrl.view.ui.datamaster.JIFSchemaJamsos.btnSimpanActionPerformed(JIFSchemaJamsos.java:368)
> at
> mst.pyrl.view.ui.datamaster.JIFSchemaJamsos.access$200(JIFSchemaJamsos.java:48)
> at
> mst.pyrl.view.ui.datamaster.JIFSchemaJamsos$3.actionPerformed(JIFSchemaJamsos.java:153)
> at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
> at
> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
> at
> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
> at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
> at
> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
> at java.awt.Component.processMouseEvent(Component.java:6134)
> at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
> at java.awt.Component.processEvent(Component.java:5899)
> at java.awt.Container.processEvent(Container.java:2023)
> at java.awt.Component.dispatchEventImpl(Component.java:4501)
> at java.awt.Container.dispatchEventImpl(Container.java:2081)
> at java.awt.Component.dispatchEvent(Component.java:4331)
> at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
> at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
> at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
> at java.awt.Container.dispatchEventImpl(Container.java:2067)
> at java.awt.Window.dispatchEventImpl(Window.java:2458)
> at java.awt.Component.dispatchEvent(Component.java:4331)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
> Caused by: java.sql.BatchUpdateException: Duplicate entry 'TRT01-qwerty0001'
> for key 2
> at
> com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1666)
> at
> com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1082)
> at
> org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
> at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
> ... 35 more
>
> 2009-06-16 11:18:00,234 [AWT-EventQueue-0] INFO
> org.hibernate.impl.SessionFactoryImpl closing
> 2009-06-16 11:18:00,250 [AWT-EventQueue-0] INFO
> org.hibernate.connection.DriverManagerConnectionProvider cleaning up
> connection pool: jdbc:mysql://localhost/a123
> BUILD SUCCESSFUL (total time: 1 minute 58 seconds)
>
>
>
>
>
>
>
>
>
>
> 



-- 
syaiful.mukhlis
gtalk:[email protected]

Kirim email ke