Как обновить поле, являющееся частью первичных ключей в Moqui?

Многие сущности в moqui имеют первичный ключ комбинации нескольких полей. В некоторых сценариях люди могут захотеть обновить одно из полей в первичных ключах. например для изображений продуктов, которые хранятся в сущности ProductContent, которая имеет первичные ключи productId, productContentTypeEnumId, contentLocation, fromDate, люди могут захотеть обновить одно изображение от детали до большого, я не нашел, как это сделать в moqui, фактически в движке сущности пока что.

Одно из решений - удалить его, а затем добавить новый. но это звучит странно.


person Jimmy Shen    schedule 25.02.2014    source источник


Ответы (1)


Просто чтобы прояснить некоторую структуру проекта: сущность ProductContent на самом деле является частью проекта Mantle Business Artifacts, а не Moqui Framework. Артефакты Mantle Business - это основная часть экосистемы Moqui.

Для сущностей с несколькими полями первичного ключа это ограничение базы данных, т.е. вы не можете обновить поле PK. Вы должны создать новую запись, и то, что вы делаете с другой записью, зависит от потребностей вашего приложения (истечение срока действия, удаление, выход и т. Д.).

Что-то можно было бы добавить к Entity Facade, чтобы делать что-то подобное автоматически, но это было бы сложно. Чтобы идентифицировать запись, код должен знать старые и новые значения поля PK и что делать со старой записью.

Если не появится четкий шаблон для общего варианта использования (и за 14 лет работы с ERP я не могу придумать ни одного, с которым я столкнулся бы очень часто, хотя шаблон истечения срока действия является наиболее распространенным, например, для неизменяемых записей ContactMech, и т. д. и т. д.), это лучше всего сделать с помощью явного служебного кода, а не более автоматически с помощью инструмента.

Если есть определенный шаблон, который вы хотели бы увидеть расширение Entity Facade, чтобы упростить его, обсуждение в LinkedIn Group было бы хорошим местом для его инициирования (в отличие от StackOverflow, который предназначен для вопросов и не предназначен для обсуждения. ).

person David E. Jones    schedule 26.02.2014