我对JPA有点新意,我正在努力让我的实体类正常工作,但我的代码总是给我这个错误:“字段存在多个可写映射[PRODUTOS.MARCA_IDMARCA]”< / p>
这些是我的实体类:
@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)之间建立单向的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),
约束fk_Produtos_CategoriaProduto1
外键(idCategoriaProduto
)
参考mydb
。CategoriaProduto
(idCategoriaProduto
)
无法删除操作
更新没有行动,
约束fk_Produtos_Marca1
外键(Marca_idMarca
)
参考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),
约束fk_Marca_Fornecedores1
外键(idFornecedores
)
参考mydb
。Fornecedores
(idFornecedores
)
无法删除操作
更新无动作)
ENGINE = InnoDB;
答案 0 :(得分:0)
你能展示你的桌子定义吗?
问题似乎是您有两个字段(可能Marca marca
,其中@ManyToOne
注释和int Marca_idMarca
具有相同名称)映射到同一PRODUTO.ID_MARCA
列在数据库中。
我知道我应该将此作为评论发布,但我还无法发表评论。