首页 文章

JPA中表之间关系的问题

提问于
浏览
0

我是JPA的新手,我正在尝试使我的实体类正常工作,但我的代码总是返回给我这个错误:“字段存在多个可写映射[PRODUTOS.MARCA_IDMARCA]”

这些是我的实体类:

@Entity
public class Marca implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer idMarca;
    private String nome;
    private Integer idFornecedores;
    .
    .
    .
}

我正试图在produtos和Marca(1 Marca to Many produtos)之间 Build 单向的ManyToOne关系:

@Entity
public class produtos implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long idProdutos;
    private int codBarras;
    private String nome;
    private float preco;
    private int qtdProduto;
    private int idCategoriaProduto;
    @ManyToOne
    private CategoriaProduto categoria;
    private int Marca_idMarca;
    @ManyToOne
    private Marca marca;
    .
    .
    .
}

错误:

Exception Description: Multiple writable mappings exist for the field [PRODUTOS.MARCA_IDMARCA]. Only one may be defined as writable, all others must be specified read-only.
Mapping: org.eclipse.persistence.mappings.ManyToOneMapping[marca]
Descriptor: RelationalDescriptor(ClassesDeEntidade.produtos --> [DatabaseTable(PRODUTOS)])

我真的不知道发生了什么 . 任何人都可以向我解释为什么这段代码错了?

编辑:

表定义:

Produtos:

CREATE TABLE IF NOT NOT EXISTS mydb . ProdutosidProdutos INT NOT NULL AUTO_INCREMENT, codBarras INT(13)NOT NULL, nome VARCHAR(150)NOT NULL, preco FLOAT NOT NULL, qtdProduto INT NOT NULL, idCategoriaProduto INT NOT NULL, Marca_idMarca INT NOT NULL,PRIMARY KEY( idProdutos ), INDEX fk_Produtos_CategoriaProduto1_idxidCategoriaProduto ASC),INDEX fk_Produtos_Marca1_idxMarca_idMarca ASC),CONSTRAINT fk_Produtos_CategoriaProduto1 FOREIGN KEY( idCategoriaProduto )REFERENCES mydb . CategoriaProdutoidCategoriaProduto )ON OFF ON NO ACTION ON UPDATE NO ACTION,CONSTRAINT fk_Produtos_Marca1 FOREIGN KEY( Marca_idMarca )REFERENCES mydb . MarcaidMarca )在更新时不执行任何操作无操作)ENGINE = InnoDB;

马卡报:

CREATE TABLE IF NOT NOT EXISTS mydb . MarcaidMarca INT NOT NULL AUTO_INCREMENT, nome VARCHAR(45)NOT NULL, idFornecedores INT NOT NULL,PRIMARY KEY( idMarca ),INDEX fk_Marca_Fornecedores1_idxidFornecedores ASC),CONSTRAINT fk_Marca_Fornecedores1 FOREIGN KEY( idFornecedores )REFERENCES mydb . FornecedoresidFornecedores )ON DELETE没有动作更新无动作)ENGINE = InnoDB;

1 回答

  • 0

    你能展示你的餐桌定义吗?问题似乎是您有两个字段(可能是 Marca marca ,其具有 @ManyToOne 注释和 int Marca_idMarca ,具有相同的名称)映射到数据库中的同一 PRODUTO.ID_MARCA 列 .

    我知道我应该发布这个评论作为评论,但我还没有评论 .

相关问题