JPA에 약간 익숙하며 내 엔티티 클래스가 제대로 작동하도록 노력하고 있습니다. 그러나이 코드는 항상 다음과 같은 오류를 반환합니다. "필드에 여러 개의 쓰기 가능한 매핑이 있습니다. [PRODUTOS.MARCA_IDMARCA] "JPA의 테이블 간의 관계 문제
이러한 내 엔티티 클래스는 다음과 같습니다
@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 1 마르카을) 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 :
하지가 mydb
을 존재하는 경우 테이블을 만듭니다. Produtos
( idProdutos
INT NOT NULL AUTO_INCREMENT, codBarras
INT (13) NULL NOT, nome
VARCHAR (150) NULL NOT, preco
FLOAT NULL NOT, qtdProduto
INT NULL NOT, 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
) 참조 mydb
. ON이 업데이트에 대한 어떠한 조치 NO ACTION 을 삭제할 CategoriaProduto
(idCategoriaProduto
) , CONSTRAINT fk_Produtos_Marca1
FOREIGN KEY (Marca_idMarca
) REFERENCES mydb
. Marca
(idMarca
) 아무 조치도 취하지 말 것. 업데이트 조치 없음) ENGINE = InnoDB;
마르카는 : NOT이 mydb
을 존재하는 경우
테이블을 만듭니다. Marca
( idMarca
INT NOT NULL AUTO_INCREMENT, nome
VARCHAR (45) NULL NOT, idFornecedores
INT NULL NOT, PRIMARY KEY (idMarca
) INDEX fk_Marca_Fornecedores1_idx
(idFornecedores
ASC) CONSTRAINT fk_Marca_Fornecedores1
FOREIGN KEY (idFornecedores
) REFERENCES (idFornecedores
) 아무 조치도 취하지 말 것. 업데이트 조치 없음) ENGINE = InnoDB;
테이블 정의를 추가했습니다. 그러나 나는 아직도 문제가 무엇인지 파악하지 못했습니다. – Pedro
'Marca' 객체를 참조하는'int Marca_idMarca'와'Marca marca'가 있습니까? 너 정말 이거 필요해? 왜냐하면 당신은 항상'marca.getIdMarca()'에 의해 id를 얻을 수 있기 때문이다. – brlaranjeira
이것이 문제였던 것 같습니다. 이것을 고칠 때, 그것은 효과가있었습니다. 감사! – Pedro