2015-01-09 2 views
1

엔티티를 저장할 때 약간의 문제가 있습니다. (이 문제는 저장시에만 발생합니다. findAll을 사용하면 정상적인 작업을 수행 할 수 있기 때문에 발생합니다)최대 절전 모드 - @IdClass @ManyToOne - 기본 키도 외래 키입니다

내가 말했듯이 엔티티 (repository.save (법인))를 저장할 때

, 필자는 다음과 예외를

//org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.Integer' to required type 'net.lapasta.model.entity.Produto' for property 'produto'; 
//nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.Integer] to required type [net.lapasta.model.entity.Produto] for property 'produto': no matching editors or conversion strategy found 

내 개체를 얻는 것은 :

@Entity 
@IdClass(ProdutoEstoqueRegra.PrimaryKey.class) 
@Table(name = "PRODUTO_ESTOQUE_REGRA") 
public class ProdutoEstoqueRegra extends BaseEntity 
{ 
    private static final long serialVersionUID = 2977957269715314234L; 

    public static class PrimaryKey extends BaseEntity 
    { 
     private static final long serialVersionUID = 5136771432344094321L; 

     private Produto produto; 
     private Produto produtoEstoque; 

     public PrimaryKey() 
     { 

     } 

     public PrimaryKey(Produto produto, Produto produtoEstoque) 
     { 
      this.produto = produto; 
      this.produtoEstoque = produtoEstoque; 
     } 

     public Produto getProduto() 
     { 
      return produto; 
     } 

     public void setProduto(Produto produto) 
     { 
      this.produto = produto; 
     } 

     public Produto getProdutoEstoque() 
     { 
      return produtoEstoque; 
     } 

     public void setProdutoEstoque(Produto produtoEstoque) 
     { 
      this.produtoEstoque = produtoEstoque; 
     } 

     @Override 
     public int hashCode() 
     { 
      final int prime = 31; 
      int result = 1; 

      result += prime * result + (produto == null ? 0 : produto.getProdutoId() == null ? 0 : produto.getProdutoId().hashCode()); 
      result += prime * result + (produtoEstoque == null ? 0 : produtoEstoque.getProdutoId() == null ? 0 : produtoEstoque.getProdutoId().hashCode()); 

      return result; 
     } 

     @Override 
     public boolean equals(Object object) 
     { 
      if(this == object) 
      { 
       return true; 
      } 

      if(!(object instanceof ProdutoEstoqueRegra)) 
      { 
       return false; 
      } 

      ProdutoEstoqueRegra produtoEstoqueRegra = (ProdutoEstoqueRegra) object; 

      if(produto == null) 
      { 
       if(produtoEstoqueRegra.getProduto() != null) 
       { 
        return false; 
       } 
      } 
      else if(produto.getProdutoId() == null) 
      { 
       if(produtoEstoqueRegra.getProduto().getProdutoId() != null) 
       { 
        return false; 
       } 
      } 
      else if(!produto.equals(produtoEstoqueRegra.getProduto())) 
      { 
       return false; 
      } 

      if(produtoEstoque == null) 
      { 
       if(produtoEstoqueRegra.getProdutoEstoque() != null) 
       { 
        return false; 
       } 
      } 
      else if(produtoEstoque.getProdutoId() == null) 
      { 
       if(produtoEstoqueRegra.getProdutoEstoque().getProdutoId() != null) 
       { 
        return false; 
       } 
      } 
      else if(!produtoEstoque.getProdutoId().equals(produtoEstoqueRegra.getProdutoEstoque().getProdutoId())) 
      { 
       return false; 
      } 

      return true; 
     } 
    } 

    @Id 
    @ManyToOne 
    @JoinColumn(name = "ID_PRODUTO") 
    private Produto produto; 

    @Id 
    @ManyToOne 
    @JoinColumn(name = "ID_PRODUTO_ESTOQUE") 
    private Produto produtoEstoque; 

    @Column(name = "QUANTIDADE") 
    private BigDecimal quantidade; 
} 
+0

여기 HTTP에서 예를 볼 수 있습니다 ProdutoRepository, 를 사용하여 저장하십시오 : //stackoverflow.com/questions/39185977/failed-to-convert-request-element-in-entity-with-idclass/42592560#42592560 –

답변

1

난 그냥 같은 문제를 가지고 ... .그리고 나 나 자신에 의해 그것을 해결 마지막 : 귀하의 경우에는 , 내가 u는 다음과 같이 당신의 기본 키 클래스를 변경해야 Produto의 ID 유형이 긴 가정 :

public static class PrimaryKey extends BaseEntity 
{ 
    private static final long serialVersionUID = 5136771432344094321L; 

    private Long produto; 
    private Long produtoEstoque; 

    public PrimaryKey() 
    { 

    } 

    public PrimaryKey(Long produto, Long produtoEstoque) 
    { 
     this.produto = produto; 
     this.produtoEstoque = produtoEstoque; 
    } 

    public Long getProduto() 
    { 
     return produto; 
    } 

    public void setProduto(Long produto) 
    { 
     this.produto = produto; 
    } 

    public Long getProdutoEstoque() 
    { 
     return produtoEstoque; 
    } 

    public void setProdutoEstoque(Long produtoEstoque) 
    { 
     this.produtoEstoque = produtoEstoque; 
    } 

    //... 
} 
관련 문제