【问题标题】:Error message when persisting entity with EmbbededID in Many To One relationship在多对一关系中使用 EmbbededID 持久化实体时出现错误消息
【发布时间】:2017-06-07 13:59:20
【问题描述】:

我正在 JSF 中开发一个项目,并尝试在下面保留此实体,但我收到一条错误消息。在我创建关系之前,Conta 类正确地持续存在,但使用 Transacao 的多对一时,我不能。

这是 Transacao 类:

@Id
@GeneratedValue
private long id;
private Conta contaOrigem;
private String agenciaDestino;
private String contaDestino;
private String cpfDestino;
...

这是 Conta 类:

public class Conta {

@EmbeddedId
private DadosConta contaUsuario = new DadosConta();
@NotEmpty(message="Senha não pode estar em branco")
private String senha;
@NotEmpty(message="Selecione uma opção")
private String tipoConta;
private double saldo;
private Usuario usuario = new Usuario();
@OneToMany(mappedBy="contaOrigem", fetch = FetchType.LAZY)
private List<Transacao> transacoes = new ArrayList<>();
...

还有 DadosConta(嵌入式 ID 类):

@Embeddable
public class DadosConta implements Serializable {

private static final long serialVersionUID = -7021727065659352073L;
@NotEmpty
private String agencia;
@NotEmpty
private String conta;
...

最后,这是错误:

Foreign key (FK_8k5jlptboiq6xm4oopg9jnh2l:Transacao [contaOrigem])) must have same number of columns as the referenced primary key (conta [agencia,conta])

我知道错误消息是“显式”的,但我不知道如何保持与 EmbeddedId 的这种多对一关系,有什么解决方法吗?

非常感谢。

【问题讨论】:

    标签: java entity-framework hibernate jpa jakarta-ee


    【解决方案1】:

    在您的 Transacao 类中尝试此操作以完成双向连接。

    @ManyToOne
    @JoinColumns({@JoinColumn(name = "agencia"), @JoinColumn(name = "conta")})
    private Conta contaOrigem;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2015-07-27
      • 2020-06-15
      相关资源
      最近更新 更多