Meu editor recomendou utilizar o H2 versão 2.1.214 e não a versão mais antiga presente no vídeo. No entanto, quando tentava cadastrar o produto sem inicializar o Id, mesmo anotando @Id @GeneratedValue(strategy = GenerationType.IDENTITY) na variável, ele lançava a exceção:
ERROR: NULL not allowed for column "ID"; SQL statement:
insert into produtos (id, descricao, nome, preco) values (null, ?, ?, ?)
Pesquisei um pouco e descobri que é um problema da versão do H2. Utilizei uma solução que encontrei no stack overflow: indicar que o banco de dados deveria ser acessado em modo legado. Indiquei isso na propriedade da URL do banco de dados no arquivo persistence.xml da seguinte forma:
<property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:loja;MODE=LEGACY"/>
E funcionou. Agora consigo inserir o produto sem inicializar o Id, já que o banco fará isso para mim. A questão é: qual seria a forma correta de lidar com inserções de objetos com atributos auto gerados pelo banco de dados? Não acredito que usar o modo legado seja uma boa prática. Qual é a razão para essa funcionalidade ser retirada numa versão mais atual?