Платформа объекта + ПОСТЕПЕННО

Вот простое решение с использованием SQL

SELECT parent_id
FROM child_parent
WHERE child_id IN ('childA', 'childC')
GROUP BY parent_id
HAVING COUNT(DISTINCT child_id) = 2

Если родитель не может иметь одного и того же потомка дважды (например, у вас есть уникальный ключ на (parent_id, child_id), то вы можете удалить DISTINCT из COUNT() ] агрегатная функция.

Это должно быть просто, чтобы перевести это в JPQL, или вы просто используете собственный запрос SQL.

8
задан Lukasz 27 August 2009 в 17:47
поделиться

2 ответа

You can try Automapper, works for me.

http://www.codeplex.com/AutoMapper

11
ответ дан 5 December 2019 в 14:06
поделиться

Несмотря на то, что я не знаю о картографе данных, который делает то, что вы хотите для EF, написать его не сложно. Кроме того, поскольку определение отображений является большей частью работы, на самом деле это не сложнее, чем использование отображений интерфейса, которые вы перечислили. Вы просто создаете класс Mapper, который имеет несколько функций карты, каждая из которых содержит вашу логику отображения.

Одной мыслью, которая может быть интересной, является создание методов расширения функций вашей карты. Вы по-прежнему создаете класс Mapper, но каждый из методов карты будет выглядеть как

    public static Person MapToPerson(this Manager.Model.Customer bizObject)
    {
        Person person = new Person();
        // mapping logic
        return person;
    }

Поскольку метод MapToPerson является методом расширения, а не методом в вашем классе bizObject, вы не нарушаете POCO. Но из-за синтаксического сахара метода расширения ваш метод InsertCustomer может иметь такой код:

    Customer customer = bizObject.MapToCustomer();
    Person person = bizObject.MapToPerson();
1
ответ дан 5 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: