Duvida com versionamento no hibernate

Pessoal tenho uma classe Produto que coloquei uma coluna de versao para que seja checada a versao quando alguem tentar salvar o objeto ta funcionando td certinho na tela de cadastro de produtos ou seja se alguem for alterar este produto e outra pessoa tiver alterado antes ele nao deixa,
porem eu gostaria que qdo o usuario fosse fazer um pedido e se alguem alterasse um dos produtos que ele esta incluindo no pedido e salvasse antes do pedido,o sistema nao deixasse ele incluir o pedido tbm,como posso fazer isso??
segue o mapeamento:[code]

@Entity
@Table(name = “produto”)
@SequenceGenerator(name = “geraCodProduto”, sequenceName = “geraCodProduto”)
@org.hibernate.annotations.Entity(optimisticLock = org.hibernate.annotations.OptimisticLockType.VERSION)
public class Produto implements Serializable {
@Version
@Column(name = “versao”)
private int versao;

[/code]

Alguem pode ajudar??

Tinha lido a pergunta ontem a noite, mas não tenho experiência com o versionamento do hibernate, entretanto com experiência em outras pedras que a persistência nos coloca tenho um palpite.

Talvez se o saveOrUpdate do pedido e itens ficarem dentro da mesma transação o pedido também não seria incluído devido a uma StaleObjectStateException e seria realizado o rollback, note que nunca fiz isso, talvez o que eu esteja falando seja uma baita bobagem.

Não sei se já testastes isso, mas penso que o caminho está no uso de transações.

Abraço