Данные Spring и @EntityGraph на составном первичном ключе - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть этот код:

@Table(name = "contact_supplier_function")
@Entity
public class ContactSupplierFunctionEntity implements Serializable {
    private static final long serialVersionUID = 3969992836064953905L;

    @EmbeddedId
    private ContactSupplierFunctionEntityPk contactSupplierFunctionId;

    public ContactSupplierFunctionEntityPk getContactSupplierFunctionId() {
        return contactSupplierFunctionId;
    }

    public void setContactSupplierFunctionId(ContactSupplierFunctionEntityPk contactSupplierFunctionId) {
        this.contactSupplierFunctionId = contactSupplierFunctionId;
    }
}
@Embeddable
public class ContactSupplierFunctionEntityPk implements Serializable {
    private static final long serialVersionUID = -1343896399377494969L;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "supplier_id ", nullable = false)
    private SupplierEntity supplier;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "function_id", nullable = false)
    private FunctionEntity function;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "contact_id", nullable = false)
    private ContactEntity contact;

    public SupplierEntity getSupplier() {
        return supplier;
    }

    public void setSupplier(SupplierEntity supplier) {
        this.supplier = supplier;
    }

    public FunctionEntity getFunction() {
        return function;
    }

    public void setFunction(FunctionEntity function) {
        this.function = function;
    }

    public ContactEntity getContact() {
        return contact;
    }

    public void setContact(ContactEntity contact) {
        this.contact = contact;
    }
}

@Repository
public interface ContactSupplierFunctionDAO extends CrudRepository<ContactSupplierFunctionEntity, ContactSupplierFunctionEntityPk> {
    @EntityGraph(attributePaths = { "contactSupplierFunctionId.function" })
    List<ContactSupplierFunctionEntity> findByContactSupplierFunctionIdContactIdAndContactSupplierFunctionIdSupplierIdIn(
            Long contactId, List<Long> supplierIds);
}

Я хотел бы загрузить данные моего составного первичного ключа с @EntityGraph в моем хранилище, потому что я не хочу помещать их в Fetch.EAGER.

Но у меня есть эта ошибка:

сгенерировано исключение [Ошибка обработки запроса; вложенное исключение - org.springframework.dao.InvalidDataAccessApiUsageException: атрибут [contactSupplierFunctionId] не относится к управляемому типу; Вложенное исключение - java.lang.IllegalArgumentException: Атрибут [contactSupplierFunctionId] не относится к управляемому типу] с основной причиной java.lang.IllegalArgumentException: атрибут [contactSupplierFunctionId] не имеет управляемого типа

Можно ли сделать это с помощью @EntityGraph?

У вас есть другое решение?

Спасибо

...