JPA оптимистическая блокировка - установка @Version в класс сущности приводит к тому, что запрос включает VERSION в качестве столбца - PullRequest
0 голосов
/ 28 декабря 2010

Я использую JPA Toplink Essential, Netbean6.8, GlassFish v3

В своем классе Entity я добавил @Version annotation, чтобы включить optimistic locking при фиксации транзакции, однако после добавления аннотации мой запрос начал включать VERSION в качестве столбца, таким образом вызывая исключение SQL.

Ничего из этого не упоминается ни в одном уроке, который я видел до сих пор. Что может быть не так?

Отрывок

public class MasatosanTest2 implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name = "username")
    private String username;
    @Column(name = "note")
    private String note;

    //here adding Version
    @Version
    int version;

использованный запрос:

SELECT m FROM MasatosanTest2 m

Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException
Call: SELECT id, username, note, VERSION FROM MasatosanTest2 

1 Ответ

3 голосов
/ 28 декабря 2010

Вы должны добавить версию в виде числового столбца к вашей таблице.Этот столбец будет использоваться для оптимистической блокировки.

Но я предпочитаю поле даты для оптимистической блокировки, чтобы вы могли отслеживать, когда этот объект изменился.

...