1

我正在尝试使用复合主键插入记录,但在保存新记录时,我收到以下消息:

e = (org.springframework.orm.jpa.JpaSystemException) org.springframework.orm.jpa.JpaSystemException: 无法通过反射设置字段值 [POST_INSERT_INDICATOR] 值...

@Getter
@Setter
@Entity
@EqualsAndHashCode
@Table(name = "produto")
@IdClass(ProdutoId.class)
public class Produto implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_produto")
    private Long idProduto;

    @Id
    @Column(name = "oficina", insertable = false, updatable = false)
    private Long idOficina;

    @ManyToOne
    @JoinColumn(name = "oficina")
    private Oficina oficina;

}



@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@Data
public class ProdutoId implements Serializable {

    public Long idProduto;
    public Long idOficina;

}


@Repository
public interface ProdutoRepository extends JpaRepository<Produto, ProdutoId> {}

有没有人见过这样的错误?

4

1 回答 1

0

要创建复合主键,您可以参考此示例,

@Entity
@Table(name="testuserrole")
public class UserRole{
    @EmbeddedId
    private UserRoleId id = new UserRoleId();

    public UserRoleId getId() {
        return id;
    }

    public void setId(UserRoleId id) {
        this.id = id;
    }

    @Transient
    public long getUserId() {
        return id.userId;
    }

    public void setUserId(long userId) {
        id.userId=userId;
    }

    @Transient
    public long getRoleId() {
        return id.roleId;
    }

    public void setRoleId(long roleId) {
        id.roleId=roleId;
    }

}

@Embeddable
class UserRoleId implements Serializable {

    @Column(name = "user_id")
    public long userId;

    @Column(name = "role_id")
    public long roleId;

}
于 2017-01-30T05:03:43.080 回答