Community
Participate
Working Groups
Build Identifier: eclipselink-2.3.0.v20110604-r9504 Using entity: @Entity @Table(name="EMPLOYEE") public class Employee implements java.io.Serializable { private int id; private String firstName; private String lastName; private float salary; public Employee() { } public Employee(int id, String firstName, String lastName, float salary) { this.id = id; this.firstName = firstName; this.lastName = lastName; this.salary = salary; } // =========================================================== // getters and setters for the state fields @Id @Column(name="ID") public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(name="FIRSTNAME") public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } @Column(name="LASTNAME") public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Column(name="SALARY") public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } ------------------ client code: try { Query q = getEntityManager().createQuery( "UPDATE Employee e SET e.salary = e.salary * 10.0"); q.setLockMode(LockModeType.PESSIMISTIC_READ); System.out.println("IllegalStateException should have been thrown"); } catch (IllegalStateException e) { System.out.println("Got TransactionRequiredException as expected"); } catch (Exception e) { System.out.println("Unexpected exception occurred", e); } ------------------ output: Unexpected exception occurred java.lang.IllegalArgumentException: A lock type can only be used with a select query (which allows the database to be locked where necessary). at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setLockMode(EJBQueryImpl.java:1039) at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setLockMode(EJBQueryImpl.java:81) Reproducible: Always
Updating target milestone.
My tests on the current build show the correct exception being thrown.
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink