Cenário tenho um tabela que tem identificado de um lote de venda de produtos por lote.
Cenário tenho um tabela que tem identificado de um lote de venda de produtos por lote.
Opa, Wesley! Beleza, cara? =)
Desculpa, não sei se entendi sua dúvida... Você poderia tentar explicar um pouco mais, por favor? =)
Fábio
No caso do MYSQL utilizamos a anotação GeneratedValue(strategy=GenerationType.IDENTITY) que deixa responsabilidade do JPA gerenciar o identificador.
E no caso do Oracle utilizamos a anotação @GeneratedValue(strategy = GenerationType.SEQUENCE) porém não que criar uma sequece no banco de dados para fazer esse gerenciamanto
Wesley,
Eu dei uma pesquisada e vi algumas pessoas comentando sobre esse problema... Alguns disseram que é necessário adicionar mais uma annotation... Além de colocar @GeneratedValue(strategy = GenerationType.SEQUENCE)
, tenta adicionar mais um atributo nessa anotação e adicionar mais uma anotação:
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="mySequence")
@SequenceGenerator(name="mySequence", sequenceName="mySequence")
Qual DDL você está utilizando? update
? Se não for, me parece que você precisa criar manualmente:
CREATE SEQUENCE mySequence;
Você poderia testar isso e me dizer se funcionou ou não, por favor? =)
Fábio
Teria outra forma sem utilizar sequece? e o JPA gerenciar isso, ex eu tenho um lote de venda de tv :
LOTE | TV | MODELO |
---|---|---|
1 | 2 | SAMSUNG |
1 | 3 | LG |
somente o ID do lote vai ser único para cada lote, já id da TV sera variável uma Foreign key. Quero uma forma de gerenciar o id do lote
Wesley,
Se entendi corretamente, o ID do lote será uma Primary Key, enquanto o ID da TV será um Foreign Key, correto?
Para sua PK geralmente utilizar o @GeneratedValue
, mesmo, se desejamos que a JPA faça o auto increment, sacou?
Para a sua FK, você pode usar @OneToOne
, @OneToMany
, @ManyToOneou
@ManyToMany`, de acordo com sua regra de negócio... Seu provedor da JPA irá cuidar dos relacionamentos para você. =)
Fábio
Fábio mais uma Primary Key, não pdoe se repetir! e nesse caso por se trata de um lote vai ter vários registros com a mesmo id do lote.
Wesley,
Ah, boa! Agora acho que entendi sua questão... Rs.
O conjunto ID do lote e da TV, juntos, seriam sua chave primária?
Fábio
Fábio pensei em deixa ID do lote com indexes, e ID da TV como Foreign Key.
Wesley,
Acredito que possa ser uma solução viável, embora, sendo sincero, não me recordo exatamente como fazer isso...
Mas, analisando a questão novamente, pela tabela que você mostrou, me parece que ela é uma tabela intermediária no meio de uma relação @ManyToMany
, percebe?
Você possui o ID do lote e o ID da TV... E cada um deles pode aparecer várias vezes...
Você poderia pensar em ter uma classe que representa o lote e uma outra que representa a TV... E um @ManyToMany
entre eles:
// Classe Lote
public class Lote {
@Id @GeneratedValue
private Long id;
@ManyToMany
private List<Tv> tvs = new ArrayList<>();
// Outras informações sobre o lote e métodos...
}
// Classe Tv
public class Tv {
@Id @GeneratedValue
private Long id;
@ManyToMany(mappedBy = "tvs")
private List<Lote> lotes = new ArrayList<>();
// Outras informações sobre a TV e métodos...
}
Ao fazer dessa forma, você terá sua tabela com informações sobre os lotes, uma outra tabela com informações sobre as TVs e uma tabela intermediária será criada, com os ID's de ambos... =)
Fábio