我是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
. Produtos
( idProdutos
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_idx
( idCategoriaProduto
ASC),INDEX fk_Produtos_Marca1_idx
( Marca_idMarca
ASC),CONSTRAINT fk_Produtos_CategoriaProduto1
FOREIGN KEY( idCategoriaProduto
)REFERENCES mydb
. CategoriaProduto
( idCategoriaProduto
)ON OFF ON NO ACTION ON UPDATE NO ACTION,CONSTRAINT fk_Produtos_Marca1
FOREIGN KEY( Marca_idMarca
)REFERENCES mydb
. Marca
( idMarca
)在更新时不执行任何操作无操作)ENGINE = InnoDB;
马卡报:
CREATE TABLE IF NOT NOT EXISTS mydb
. Marca
( idMarca
INT NOT NULL AUTO_INCREMENT, nome
VARCHAR(45)NOT NULL, idFornecedores
INT NOT NULL,PRIMARY KEY( idMarca
),INDEX fk_Marca_Fornecedores1_idx
( idFornecedores
ASC),CONSTRAINT fk_Marca_Fornecedores1
FOREIGN KEY( idFornecedores
)REFERENCES mydb
. Fornecedores
( idFornecedores
)ON DELETE没有动作更新无动作)ENGINE = InnoDB;
1 回答
你能展示你的餐桌定义吗?问题似乎是您有两个字段(可能是
Marca marca
,其具有@ManyToOne
注释和int Marca_idMarca
,具有相同的名称)映射到数据库中的同一PRODUTO.ID_MARCA
列 .我知道我应该发布这个评论作为评论,但我还没有评论 .