Tenho uma classe Products
que tem:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "products_seq")
@SequenceGenerator(name = "products_seq", sequenceName = "products_seq", allocationSize = 1)
@Column(name = "PRODUCT_ID")
protected Integer productId;
também tem: private Attributes attributes;
que deve ser unido @OneToOne
à Attributes
classe;
O problema é que Attributes
não contém o seu próprio id
. É uma tabela com duas colunas ATTRIBUTE_ID
e DATE
. Infelizmente ATTRIBUTE_ID
não é gerado id, mas é o mesmo que product_id
da Products
classe.
Tentei adicionar na classe Produtos:
@OneToOne(mappedBy = "product", cascade = CascadeType.PERSIST)
private Attributes attributes;
e na classe Atributos:
@Id
@GeneratedValue(generator = "foreign")
@GenericGenerator(name = "foreign", strategy = "foreign", parameters = @Parameter(name = "property", value = "product"))
@Column(name = "ATTRIBUTE_ID")
private Integer attributeId;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "attribute_id")
private Product product;
mas não acho que seja a solução correta. Acredito que ATTRIBUTES
table também deveria ter, id
mas seria difícil conseguir isso agora. Existe uma maneira adequada de lidar com essa situação estranha?
Acredito que usar a chave primária do pai em uma abordagem um-para-um ou um-para-zero é uma abordagem frequentemente usada.
No seu caso,
Attributes
pode ser algo assim: