I have the following additional information. In the SQL log info provided below, the first INSERT operation was successful, but the second INSERT hung on what appears to be an additional UPDATE operation.
Code:
Hibernate: select PHOTO_PK.nextval from dual
Hibernate: insert into MYDB.RENTAL_PHOTO (ACTIVE, CREATE_DTTM, CREATED_BY, DESCRIPTION, IMAGE, IMAGE_BLOB, LAST_UPDATED_BY, LAST_UPDATED_DTTM, RENTAL_NBR, PHOTO_NAME, RENTAL_PHOTO_PK) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update MYDB.RENTAL_PHOTO set ACTIVE=?, CREATE_DTTM=?, CREATED_BY=?, DESCRIPTION=?, IMAGE=?, IMAGE_BLOB=?, LAST_UPDATED_BY=?, LAST_UPDATED_DTTM=?, RENTAL_NBR=?, PHOTO_NAME=? where RENTAL_PHOTO_PK=?
Hibernate: select PHOTO_PK.nextval from dual
Hibernate: insert into MYDB.RENTAL_PHOTO (ACTIVE, CREATE_DTTM, CREATED_BY, DESCRIPTION, IMAGE, IMAGE_BLOB, LAST_UPDATED_BY, LAST_UPDATED_DTTM, RENTAL_NBR, PHOTO_NAME, RENTAL_PHOTO_PK) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update MYDB.RENTAL_PHOTO set ACTIVE=?, CREATE_DTTM=?, CREATED_BY=?, DESCRIPTION=?, IMAGE=?, IMAGE_BLOB=?, LAST_UPDATED_BY=?, LAST_UPDATED_DTTM=?, RENTAL_NBR=?, PHOTO_NAME=? where RENTAL_PHOTO_PK=?
Hibernate: update MYDB.RENTAL_PHOTO set ACTIVE=?, CREATE_DTTM=?, CREATED_BY=?, DESCRIPTION=?, IMAGE=?, IMAGE_BLOB=?, LAST_UPDATED_BY=?, LAST_UPDATED_DTTM=?, RENTAL_NBR=?, PHOTO_NAME=? where RENTAL_PHOTO_PK=?
This snippet of code performs the persist of multiple photos:
Code:
EntityManagerHelper entityManager = EntityManagerHelper.getEntityManager();
for (File f:fileList) {
String fileName = f.getName();
InputStream fileStream = new FileInputStream(f);
byte[] fileBytes = new byte[fileStream.available()];
fileStream.read(fileBytes);
RentalPhoto rentalPhoto =
new RentalPhoto(null, listingNbr, date, userId, date, userId, fileBytes, "Y", fileName, fileName);
entityManager.getTransaction().begin();
entityManager.persist(rentalPhoto);
entityManager.getTransaction().commit();
}
Here is how the EntityManager is created:
Code:
public class EntityManagerHelper {
private static final EntityManagerFactory emf;
private static final ThreadLocal<EntityManager> threadLocal;
private static final Logger logger;
static {
emf = Persistence.createEntityManagerFactory("oMF");
threadLocal = new ThreadLocal<EntityManager>();
logger = Logger.getLogger("oMF");
logger.setLevel(Level.ALL);
}
public static EntityManager getEntityManager() {
EntityManager manager = threadLocal.get();
if (manager == null || !manager.isOpen()) {
manager = emf.createEntityManager();
threadLocal.set(manager);
}
return manager;
}
public static void closeEntityManager() {
EntityManager em = threadLocal.get();
threadLocal.set(null);
if (em != null) em.close();
}
public static void beginTransaction() {
getEntityManager().getTransaction().begin();
}
public static void commit() {
getEntityManager().getTransaction().commit();
}
public static void rollback() {
getEntityManager().getTransaction().rollback();
}
public static Query createQuery(String query) {
return getEntityManager().createQuery(query);
}
public static void log(String info, Level level, Throwable ex) {
logger.log(level, info, ex);
}
}
Any help would be greatly appreciated!!!