Вопросы с тегами [one-to-many]

1

голосов
1

ответ
322

Просмотры

Удалить ресурс весной остальные данные hateoas с отношением

У меня есть категория, пункт и роли для ресторана. Я могу получить и запрос POST с помощью почтальона, но при попытке удалить запись в «категории» это не дает 204 - никакого содержания, но данные все еще не удалены. это потому, что категория имеет много для одного отношения с рестораном. с другой стороны, если я делаю запрос DELETE для ролей она прекрасно работает, не имеет прямого отношения. POJO для категорий @Entity @Table (имя = "Категория") класс Категория общественного {@Id @GeneratedValue (стратегия = GenerationType.IDENTITY) частное ИНТ идентификатор; частное имя строки; @ManyToOne @JoinColumn (имя = "restaurantId") частный ресторан ресторан; @OneToMany (mappedBy = "категория", принеси = FetchType.EAGER, каскадные = CascadeType.ALL) частные элементы Set; общественная Категория () {} @Autowired общественная Категория (название String, ресторан ресторана, установить элементы) {this.name = имя; this.restaurant = ресторан; this.items = предметы; } Общественного ИНТ GetId () {возвращение идентификатор; } Общественного недействительными SETID (интермедиат ID) {this.id = ID; } Строка GetName () {имя общественного возврата; } Общественной недействительная SetName (имя String) {this.name = имя; } Установить GetItems общественного () {возвращает элементы; } общественного недействительными setItems (набор элементов) {this.items = предметы; } Общественного Ресторан getRestaurant () {возвращение ресторан; } Общественного недействительный setRestaurant (ресторан ресторан) {this.restaurant = ресторан; }} POJO для ролей @Entity @Table (Name = "Роль" ) Класс Роль общественности {@Id @GeneratedValue (стратегия = GenerationType.IDENTITY) частное ИНТ идентификатор; частное имя строки; @OneToMany (mappedBy = "роль", принеси = FetchType.EAGER, каскад = CascadeType.ALL) частные пользователи Set; общественная роль () {} @Autowired общественности Роль (имя String, Set пользователи) {this.name = имя; this.users = пользователей; } Общественного ИНТ GetId () {возвращение идентификатор; } Общественного недействительными SETID (интермедиат ID) {this.id = ID; } Строка GetName () {имя общественного возврата; } Общественной недействительная SetName (имя String) {this.name = имя; } Общественного Set GetUser () {вернуть пользователей; } общественного недействительный setUsers (набор пользователей) {this.users = пользователи;
shankara narayanan
1

голосов
0

ответ
46

Просмотры

Джанго массового удаления удаляет только сто строк в то время,

У меня есть две модели с один ко многим отношения между ними: класс HomeCarrier (models.Model) short_name = models.CharField (max_length = 32, уникальный = True) класс CarrierZipCoverage (models.Model): zip_code = models.CharField (max_length = 5 ) home_carrier = models.ForeignKey ( 'HomeCarrier', NULL = True, пустой = True) Согласно документации Вы можете также удалять объекты в объеме. Каждый QuerySet имеет метод удаления (), который удаляет все элементы этого QuerySet. Согласно комментариям источника Функция удаления на самом деле 2 запросов - один, чтобы найти соответствующие объекты, и один для удаления. Я удивлён, когда я пытаюсь навалом удалить 27K почтового покрытия кодов перевозчика carrier.carrierzipcoverage_set.all (). Удалить () Я получил один запрос на удалении для каждой сотни строк в базе данных. В то время как я ожидал увидеть только один запрос на удаление в журнале MySQL для всех почтовых кодов покрытия в то время. Вопрос, есть ли способ, чтобы удалить все объекты из базы данных с одного удаления запроса, не прибегая к сырому SQL?
Daniil Mashkin
1

голосов
0

ответ
121

Просмотры

Правильный способ справиться один-ко-многим этапов DataFlow

У меня есть (Java) пакетный трубопровод, который имеет следовать следующей схеме: (FileIO) (ExtractText> вход = 1 файл, выход = миллионы строк текста) (ProcessData) Этап ProcessData содержит медленные части (соответствующие данные от больших белых списков) и должна быть расширена на несколько рабочих, которые не должны быть проблемой, поскольку она содержит только DoFns. Однако это, казалось бы, что мои один-ко-многим сценических сил всех выходы должны быть обработаны только одним работником (инстанцирование больше рабочих делает их праздными, кроме одного, или быть разукрупненными если автомасштабирование включена). На основании других StackOverflow записи, я попытался перетасовки через Reshuffle.viaRandomKey (). Это не работает, потому что Перестановки содержит GroupByKey, который загружает все результаты в памяти, вызывая OOM, даже если я оконный его заранее через Window.into (FixedWindows.of (продолжительность. standardSeconds (1))) Другим вариантом было бы создать CustomSource заменить первые две стадии, но я считаю этот метод недостаточным, так как 1) документацию пользовательских источников сильно не хватает 2) она занимает больше времени и код для реализации 3) это один-ко-многим проблема вполне может быть встречена в середине трубопровода, где я не мог создавать собственные источники. Как я должен обрабатывать один на много этапов в Dataflow трубопровода?
The hBar Tender
1

голосов
1

ответ
107

Просмотры

Что: означает «org.hibernate.type.CollectionType создания коллекции обертка»?

LazyLoading, кажется, не работает в моем приложении, и я не знаю почему. У меня есть объекты, которые связаны, как показано ниже: общественный класс участник {частное Long ID; @OneToMany (mappedBy = "участник", принесите = FetchType.LAZY) частный Set requestProducts; @OneToMany (mappedBy = "участник", принесите = FetchType.LAZY) частный Set participantRanks; @OneToMany (mappedBy = "участник", принесите = FetchType.LAZY) частный Set requestProductParticipants; } И класс RequestProduct общественного {частный Long идентификатор; @Column частного идентификатора String; @ManyToOne (скачивает = FetchType.LAZY) частный участник Участника; } И репозиторий: Интерфейс RequestProductRepository общественный простирается JpaRepository {Необязательно findByIdentifier (идентификатор строки); } А метод обслуживания: @Transactional @Service общественный класс ServiceImpl {частное RequestProductRepository репо; общественного недействительного modifyRequestProduct (String идентификатор) {// ПРОБЛЕМЫ ЗДЕСЬ Дополнительный продукт = repo.findByIdentifier (идентификатор); }} Когда я вызвать метод findByIdentifier, похоже, загружаются все данные. У меня есть эти StackTrace: [taskExecutor-7] org.hibernate.type.CollectionType: Создана коллекция обертка: [org.module.module.models.Participant.requestProducts # 1] [taskExecutor-7] org.hibernate.type.CollectionType: Создана коллекция обертка: [org.module.module.models.Participant.participantRanks # 1] [taskExecutor-7] org.hibernate.type.CollectionType: Создана коллекция обертка: [org.module.module.models.Participant.requestProductParticipants # 1] и 3 больших запросов на выборку загрузки всех данных из каждого из 3-х таблиц вызываются. Что здесь происходит? Нормально ли это? Спасибо за ваше объяснение.
akuma8
1

голосов
2

ответ
59

Просмотры

Получить последний из соотношения где условие

У меня есть две таблицы с соотношением один ко многим. Моя задача довольно проста, мне нужно для каждого родителя последнего пункта из соотношения таблицы, где претендующее состояние. Первая таблица состояния: | ID | partner_id | статус | created_at | | ---- | ------------ | -------- | --------------------- | | 1 | 1 | 1 | 2018-01-01 00:00:00 | | 2 | 1 | 5 | 2018-02-01 00:00:00 | | 3 | 2 | 1 | 2018-01-01 00:00:00 | Связь является функцией партнер общественности () {вернуть $ this-> belongsTo (Партнер :: класс 'partner_id'); } Во-вторых, партнеры: | ID | имя | | ---- | ----------- | | 1 | PARTNER_1 | | 2 | partner_2 | Отношение это: статус общественной функции () {вернуть $ this-> hasMany (Status :: класс 'partner_id') -> OrderBy ( 'ID', 'по убыванию'); } Пусть говорят, что я хочу, чтобы все партнеры, где они в последний раз статус 1. Я попытался это: Партнер :: с ( 'статус') -> whereHas ( 'статус', функция ($ запроса) использовать ($ статусной) {$ query-> где ( 'статус', $ статус);}) -> получить(); Результат таков: «выберите * из` Партнерс где существует (выберите * от `status` где` partners`.`id` = `` status`.`partner_id` и status` = 1)»Но с ним я буду получить также PARTNER_1 даже если его последний статус 5, но в истории он имел статус 1. Я создал SQL запрос, чтобы получить это, но я думаю, что это довольно сложно сделать такую ​​простую задачу. А также я думаю, что должен быть какой-то простой Laravel подход: выберите p.id, ps.status, ps.newest_status от партнеров РЕГИСТРИРУЙТЕСЬ р ВНУТРЕННИЙ (SELECT a.created_at AS newest_status, a.partner_id, а.
Jaroslav Klimčík
1

голосов
1

ответ
24

Просмотры

Я получаю сообщение об ошибке «Попытка получить свойство„perbaikan“не-объект», когда зацикливание данные из таблицы hasMany

Я geeting ошибки при попытке получить свойство «perbaikan» не-объекта. Пожалуйста, помогите мне решить мою проблему. Моя Perbaikan модель общественная функция tagihan () {вернуть $ this-> belongsTo ( 'App \ Tagihan', 'id_tagihan'); } Моя Tagihan модель общественная функция perbaikan () {вернуть $ this-> hasMany ( 'App \ Perbaikan'); } Мой контроллер отчет общественные функции (Tagihan $ tagihan) {вид возврата ( 'tagihan.report', компактный ( 'tagihan')); } Мой вид лезвия @foreach ($ tagihan, как $ данных) @foreach ($ данных-> perbaikan в $ строке) {{$ нет}} {{$ строк -> nomor_dokumen}} {{$ строк -> kulkas -> nomor_asset }} {{$ строка -> tipepekerjaan -> kode_tipe_pekerjaan}} {{$ строка -> иностранный ( 'id_tagihan) -> ссылки (' id_tagihan ') -> по (' tagihans'); }); } Моя tagihans таблица общественные функции вверх () {Schema :: создания ( 'tagihans', функция (Blueprint $ таблица) {$ table-> приращения ( 'id_tagihan'); $ table-> строку ( 'nomor_dokumen', 25); $ таблицы-> строка ( 'periode_tagihan', 20); $ таблицы-> временные метки ();}); } Я пытался получить все данные из таблицы hasMany, он отлично работает, но я не хочу, чтобы все данные из таблицы. Я только хочу, чтобы получить данные, основанные на идентификатор из belongsTo таблицы я получаю ошибку с сообщением «Попытка получить свойство„perbaikan“не-объект» } Моя tagihans таблица общественные функции вверх () {Schema :: создания ( 'tagihans', функция (Blueprint $ таблица) {$ table-> приращения ( 'id_tagihan'); $ table-> строку ( 'nomor_dokumen', 25); $ таблицы-> строка ( 'periode_tagihan', 20); $ таблицы-> временные метки ();}); } Я пытался получить все данные из таблицы hasMany, он отлично работает, но я не хочу, чтобы все данные из таблицы. Я только хочу, чтобы получить данные, основанные на идентификатор из belongsTo таблицы я получаю ошибку с сообщением «Попытка получить свойство„perbaikan“не-объект» } Моя tagihans таблица общественные функции вверх () {Schema :: создания ( 'tagihans', функция (Blueprint $ таблица) {$ table-> приращения ( 'id_tagihan'); $ table-> строку ( 'nomor_dokumen', 25); $ таблицы-> строка ( 'periode_tagihan', 20); $ таблицы-> временные метки ();}); } Я пытался получить все данные из таблицы hasMany, он отлично работает, но я не хочу, чтобы все данные из таблицы. Я только хочу, чтобы получить данные, основанные на идентификатор из belongsTo таблицы я получаю ошибку с сообщением «Попытка получить свойство„perbaikan“не-объект» $ Table-> строка ( 'periode_tagihan', 20); $ Стол-> метки времени (); }); } Я пытался получить все данные из таблицы hasMany, он отлично работает, но я не хочу, чтобы все данные из таблицы. Я только хочу, чтобы получить данные, основанные на идентификатор из belongsTo таблицы я получаю ошибку с сообщением «Попытка получить свойство„perbaikan“не-объект» $ Table-> строка ( 'periode_tagihan', 20); $ Стол-> метки времени (); }); } Я пытался получить все данные из таблицы hasMany, он отлично работает, но я не хочу, чтобы все данные из таблицы. Я только хочу, чтобы получить данные, основанные на идентификатор из belongsTo таблицы я получаю ошибку с сообщением «Попытка получить свойство„perbaikan“не-объект»
Yanuar
1

голосов
3

ответ
1.9k

Просмотры

Как добавить много-к-одному в PostgreSQL

У меня есть две таблицы: «Stock Master» и «In Stock», как создать отношения многие-к-одному между ними? «Ценные бумаги В» записи много различных акций по различным датам и количествам, но «со Master» должен показывать и комбинировать одни и те же акции с их количества в один, и должны функционировать в качестве первого в первом из них.
1

голосов
1

ответ
821

Просмотры

добавить Объект против insertNewObjectForEntityForName Основных взаимосвязей между данными

Привет, Хотя у меня есть большой опыт в разработке баз данных, я с трудом концептуализации, связывающие отношения в Core Data. Как я понимаю, многие отношения является NSSet прикреплен к одному файлу. После прочтения документации, я понял часть и получил его на работу в первом импорте в моем коде ниже. У меня есть модель данных, в которую я выполнить два отдельных импорта с помощью XmlParser. Первые импортные грузы События и категории из того же файла XML в пределах того же импорта, как так: если (thisTagIsForOneTable) {// Вставить объект для одной сущности (События) self.eventsObject = [NSEntityDescription insertNewObjectForEntityForName: @ «События» inManagedObjectContext: xmlManagedObjectContext]; вернуть; } Если (thisTagIsForManyTable) {// Вставить объект для многих сущностей (EventCategories) self.categoriesObject = [NSEntityDescription insertNewObjectForEntityForName: @ "EventCategories" inManagedObjectContext: xmlManagedObjectContext]; вернуть; } ...... // Установка значения атрибутов в зависимости от того, является ли тег для одной сущности или многочастичных сущности. [Self.xxxObject SetValue: trimmedString forKey: имя_атрибута]; ...... // Установить связь. Это прекрасно работает! если (thisTagIsForManyTable) {NSMutableSet * manyRecordSet = [self.eventsObject mutableSetValueForKey: @ "категории"]; // Мое имя отношения. [ManyRecordSet AddObject: self.categoriesObject]; } // Сохранение контекста. Вуаля. Выше работает отлично. Второй импорт загружает EventLocations отдельно в другой части приложения, так что мне нужно, чтобы установить это к-одному на события. Это где я не слишком уверен. Должны ли шаги? // Шаг A) Создание (вставка) новое EventLocations объект. self.eventLocationsObject = [NSEntityDescription insertNewObjectForEntityForName: @ "EventLocations" inManagedObjectContext: xmlManagedObjectContext]; // Шаг B) Найдите и получить ссылку на связанный с ним один-лица объекта (события) по ID? У меня есть пользовательский класс событий. // Это похоже на работу, но я принимаю удар по производительности и получить предупреждение компилятора ниже. Метод returnObjectForEntity делает запрос и возвращает NSManagedObject. Это правильно? События * событие = (События *) [само returnObjectForEntity: @ "Событие" withID: [OneRecordObject valueForKey: @ "infIDCode"]]; // Шаг C) Установите отношения к сущности событий. если (событие) {[addLocationsObject событие: self.eventLocationsObject]; // предупреждение компилятора: несовместимые типы Objective-C 'Struct NSManagedObject *', ожидаемые 'STRUCT EventLocations * при прохождении аргумент 1 из 'addLocationsObject:' из особого типа Objective-C} // Сохранение контекста. Я не слишком уверен, что шаги B и C. Любая помощь будет оценена. Благодарю. при переходе аргумента 1 из «addLocationsObject:» из особого типа Objective-C} // Сохранение контекста. Я не слишком уверен, что шаги B и C. Любая помощь будет оценена. Благодарю. при переходе аргумента 1 из «addLocationsObject:» из особого типа Objective-C} // Сохранение контекста. Я не слишком уверен, что шаги B и C. Любая помощь будет оценена. Благодарю.
b.dot
1

голосов
1

ответ
528

Просмотры

LINQ to SQL: Generating one query when calling First() or Take()

У меня есть база данных со следующими таблицами: создание таблицы категорий (Id Int первичный ключ, Имя NVARCHAR (256) не нулевой) создать таблицу Products (Id Int первичный ключ, Имя NVARCHAR (256) не равно нулю, CategoryId Int не нулевой, внешний ключ (CategoryId) ссылка Категория (Id)) Используя DataLoadOptions, я могу написать это: DataLoadOptions ДЛО = новые DataLoadOptions (); dlo.LoadWith (с => c.Products); и получить все категории и продуктов информации в одном запросе. Тем не менее, db.Categories.First (), db.Categories.FirstOrDefault (), и db.Categories.Take (10) будет выполнять запрос, который только захватывает подмножество записей из таблицы категорий, и ничего больше. По существу, это: SELECT TOP (1) Id, Name FROM Категории - и ВЫБРАТЬ TOP (10) Id, Название FROM Категории Доступа к Продукции свойству экземпляра категории приведет к другому выполнению запроса. Я обнаружил несколько способов, чтобы обойти это. // Для первых (): вар категория = db.Categories.Single (с => с == db.Categories.First ()); // Для FirstOrDefault (): вар категория = db.Categories.SingleOrDefault (с => с == db.Categories.First ()); // Для Take (10): вар категории = db.Categories.Where (с => db.Categories.Take (10) .Contains (с)); Все заявления LINQ выше будет возвращать все категории и продукт информации для подмножества Категории записей в одном запросе каждого. Кто-нибудь знает, есть ли лучше или более эффективный способ достижения этой цели? Благодарю. // Для FirstOrDefault (): вар категория = db.Categories.SingleOrDefault (с => с == db.Categories.First ()); // Для Take (10): вар категории = db.Categories.Where (с => db.Categories.Take (10) .Contains (с)); Все заявления LINQ выше будет возвращать все категории и продукт информации для подмножества Категории записей в одном запросе каждого. Кто-нибудь знает, есть ли лучше или более эффективный способ достижения этой цели? Благодарю. // Для FirstOrDefault (): вар категория = db.Categories.SingleOrDefault (с => с == db.Categories.First ()); // Для Take (10): вар категории = db.Categories.Where (с => db.Categories.Take (10) .Contains (с)); Все заявления LINQ выше будет возвращать все категории и продукт информации для подмножества Категории записей в одном запросе каждого. Кто-нибудь знает, есть ли лучше или более эффективный способ достижения этой цели? Благодарю. Кто-нибудь знает, есть ли лучше или более эффективный способ достижения этой цели? Благодарю. Кто-нибудь знает, есть ли лучше или более эффективный способ достижения этой цели? Благодарю.
jordanbtucker
1

голосов
3

ответ
626

Просмотры

Комплекс один ко многим запроса в MySql

Я искал, но не может конденсироваться вопрос достаточно, чтобы найти соответствующий ответ. Мой опыт подсказывает мне, что это может быть проблемой разработки ... CURRENT_STATUS user_id ID status_id созданных пользователей user_id другими ... CURRENT_STATUS используется в основном для целей аудита. Каждый раз, когда изменяется состояние пользователя, новая запись вставляется в CURRENT_STATUS. Некоторые примеры статусные «работают», «уволен», «прикладной», «на увольнение» и т.д. запрос - Я хочу вернуть только самый последний статус каждого пользователя плюс информацию о пользователях ... SELECT пользователей *,. current_status.status_id AS статус от пользователей РЕГИСТРИРУЙТЕСЬ CURRENT_STATUS ON users.user_id = current_status.user_id WHERE users.user_id = «1» Как я говорю запрос, чтобы вернуть последнюю status_id для пользователя? ORDER BY current_status.created DESC LIMIT 0,1 Однако, является то, что действительно точный способ сделать это, потому что, если я хочу вернуть несколько пользователей? Любая помощь будет принята с благодарностью.
csi
1

голосов
1

ответ
857

Просмотры

Один ко многим связи в Учении

Я попытался создать один-ко-многим связи, но она работает очень странно. Я подозреваю, что класс У пользователя есть одна страна, и класс Страна имеет много пользователей. Но User-> Страна когда-либо массив вернуться с одной страной, (Doctrine Collection, а не запись). Есть кто-нибудь идея, почему? Мне нужен объект CountryUser, и я знаю, что такое отношение может быть сделано без дополнительного объекта. Я не использую формат YAML для научения, классы сделаны в ручном. Класс пользователя расширяет sfDoctrineRecord {функция setTableDefinition общественности () {$ this-> setTableName ( 'пользователь'); $ Этом-> hasColumn ( 'ID', 'целое', 5, массив ( 'тип' => 'целым числом', 'первичным' => верно, 'без знака' => верно, 'автоинкремент' => верно, «длина '=> 5,)); $ This-> hasColumn ( 'fbid', 'строка', 40, массив ( 'тип' => 'строка', 'длина' => 40, # 'NotNull' => правда, # 'уникальный' => верно, )); } Функция настройки общественности () {родитель :: нАлАдкА (); $ This-> hasOne ( 'Страна', массив ( 'локальный' => 'user_id', 'внешней' => 'COUNTRY_ID', 'refClass' => 'CountryUser')); $ Timestampable0 = новый Doctrine_Template_Timestampable (массив ()); $ This-> ACTAS ($ timestampable0); }} Класс Страна простирается sfDoctrineRecord {функция setTableDefinition общественности () {$ this-> setTableName ( 'страна'); $ This-> hasColumn ( 'ID', 'целое', 5, массив ( ' Тип»=> 'целым числом', 'первичным' => верно, 'без знака' => верно, 'автоинкремент' => верно, 'Длина' => 5,)); $ This-> hasColumn ( 'имя', 'строка', 10, массив ( 'тип' => 'строка', 'длина' => 10, 'уникальный' => правда, # 'NotNull' => верно,) ); } Функция настройки общественности () {родитель :: нАлАдкА (); $ This-> hasMany ( 'User, как пользователи', массив ( 'локальный' => 'COUNTRY_ID', 'иностранный' => 'user_id', 'refClass' => 'CountryUser')); $ Timestampable0 = новый Doctrine_Template_Timestampable (массив ()); $ This-> ACTAS ($ timestampable0); }} Класс CountryUser расширяет sfDoctrineRecord {функция setTableDefinition общественности () {$ this-> setTableName ( 'country_user'); $ Этом-> hasColumn ( 'user_id', 'целого', 5, массив ( 'NotNull' => верно, 'без знака' => верно, 'Длины' => 5, 'типа' => 'целого числа', «первичного '=> верно,)); $ Этом-> hasColumn ( 'COUNTRY_ID', 'целое', 5, массив ( 'тип' => 'целым числом', 'NotNull' => верно, 'без знака' => верно, 'Длина' => 5, «первичный '=> верно,)); }} правда, 'Длины' => 5, 'типа' => 'целого число', 'первичная' => верно,)); $ Этом-> hasColumn ( 'COUNTRY_ID', 'целое', 5, массив ( 'тип' => 'целым числом', 'NotNull' => верно, 'без знака' => верно, 'Длина' => 5, «первичный '=> верно,)); }} правда, 'Длины' => 5, 'типа' => 'целого число', 'первичная' => верно,)); $ Этом-> hasColumn ( 'COUNTRY_ID', 'целое', 5, массив ( 'тип' => 'целым числом', 'NotNull' => верно, 'без знака' => верно, 'Длина' => 5, «первичный '=> верно,)); }}
burgua
1

голосов
2

ответ
1.5k

Просмотры

SQL один-ко-многим Таблица против нескольких один-к-одному отношения

Я работаю над проектом со следующей целью: Пользователь может создать вызов и выберите дополнительный Rival, чтобы принять участие в этой проблеме. Проблема генерирует ежедневные записи и отслеживать статистику на них. Основные пользователя и вступление субъектов выглядеть следующим образом: CREATE TABLE пользователей (ID (INT), первичный ключ (идентификатор)); CREATE TABLE записи (challengeId INT, INT, USERID entryDate ДАТА, entryData VARCHAR, PRIMARY KEY (challengeId, USERID, entryDate)) Кусок У меня возникли проблемы с это вызов кусок с Rival концепции. Я вижу два подхода. // Hard код понятие вызова владелец и сопернике: CREATE TABLE вызовы (ID INT, имя VARCHAR, OwnerId INT, rivalId INT NULL, PRIMARY KEY (ID), UNIQUE KEY (OwnerId, имя)); // Создать много-к-одному. CREATE TABLE вызовы (ID INT, имя VARCHAR, PRIMARY KEY (ID), UNIQUE KEY (имя)) СОЗДАТЬ участник TABLE (challengeId INT, идентификатор пользователь INT, isOwner BIT, PRIMARY KEY (challengeId, идентификатор пользователя)) Проблема с первым подходом является что ссылочная целостность является жестким, поскольку в настоящее время есть две колонки, где UserIds проживают (OwnerId и rivalId). Я должен был бы создать две таблицы для всего (owner_entries, rival_entries, owner_stats и т.д.) для того, чтобы настроить внешние ключи. Второй подход решает эту проблему и имеет ряд преимуществ, как позволяет несколько соперников в будущем. Тем не менее, одна вещь, которую я не могу больше с этим подходом является соблюдение имен Вызова уникальность по одному пользователю, а не всей таблицы Challenge. Кроме того, задачи, как найти владельца непростой задачей в настоящее время является хитрым. Какие' S правильный подход к столу вызовы? Есть в любом случае, чтобы настроить эти таблицы в девелоперской дружественной манере, или я должен просто прыгать на всем пути к классу таблицы наследования и управления концепции владелец / Rivals там?
Cowlby
1

голосов
1

ответ
307

Просмотры

LINQ к SQL - Поиск столбец присоединяемой таблицы

Я пытаюсь вернуть результирующий набор, который включает в себя строку, в которых любые из трех строк имеют совпадение строк. Мои модели домена выглядеть следующим образом: общественный класс клиенты {общественного ИНТ CustomerID {получить; задавать; } Публичная строка FirstName {получить; задавать; } Публичная строка LastName {получить; задавать; }} BidNames общественного класса {общественного ИНТ BidNameID {получить; задавать; } Общественного ИНТ CustomerID {получить; задавать; } Публичная строка BidName {получить; задавать; }} Там есть FK между BidName.CustomerID и Customers.CustomerID и это один-ко-многим, где может быть несколько BidNames для одного клиента. При поиске моего стола клиента, я хочу, чтобы вернуть все записи, где Eсть строки матч в FirstName, LastName или любой из связанного BidNames. Для этого примера я буду использовать поисковую строку BidName из «ба». из с в Заказчиков, где с. FirstName.Contains ( "ба") || c.LastName.Contains ( "ба") || c.BidNames.Any (б => BidNames.BidName.Contains ( "ба")) OrderBy c.LastName, c.FirstName выбрать новый {CustomerID = c.CustomerID, FirstName = c.FirstName, ЬазШате = c.LastName} It все работает, пока я не добавить окончательные критерии в ИНЕКЕ. Я понимаю, что c.BidNames коллекция, и я ищу, чтобы увидеть, если любой из них есть BidName, который содержит «ба». Где я бегу в проблемы пытается определить столбец BidNames.BidName для поиска строки. Код, который я написал выше не с «BidNames не содержит определение для" BidName»Как написать последнюю часть, где положение, так что я могу найти все BidNames. BidName поле, связанное с записью клиента? Я надеюсь, и предположим, что я могу использовать тот же синтаксис, чтобы указать поле BidName в OrderBy и выберите пункты, а также. Большое спасибо, BK ОКОНЧАТЕЛЬНЫЙ ОТВЕТ: с в Заказчиков, где c.FirstName.Contains ( «ба») || c.LastName.Contains ( "ба") || c.BidNames.Any (б => b.BidName.Contains ( "ба")) OrderBy c.LastName, c.FirstName выбрать новый {CustomerID = c.CustomerID, FirstName = c.FirstName, ЬазШате = c.LastName, BidNames = c.BidNames.OrderBy (Ь => b.BidName)}
BKahuna
1

голосов
1

ответ
80

Просмотры

Обновление / Настройка отношений в основных данных, когда пользователь вводит данные из различных tableviews

У меня есть 3 сущности в моем основном приложении данных: Критерии --- >> Ранг (имеет 1 атрибут: criteriaRank)
hafizito
1

голосов
1

ответ
462

Просмотры

Многие ко многим VS. один ко многим в MongoDB конструкции с MongoMapper

Существует один пример, как это: включает в себя класс Книга MongoMapper :: ключ документа: ключ названия: author_ids, массив много: авторы, в: =>: author_ids конца класс Автор включает MongoMapper :: ключ документа: конец имени Это эквивалентен класс книгу включает MongoMapper :: ключа документа: названия много: AuthorHasBook конца класса AuthorHasBook включает MongoMapper :: ключ документа: written_time belongs_to: книги,: class_name => "книга" belongs_to: автор,: class_name => "Автор" конца класс Автор включает MongoMapper: : ключевой документ: название много: AuthorHasBook конца, который лучше? Я думаю, если мне нужно добавить несколько полей для «реляционной» сущности, я должен использовать 2-ое решение? Заранее спасибо!
zs2020
1

голосов
1

ответ
168

Просмотры

Программный определить Джанго ForeignKey ссылки

Подобный вопрос, я спросил здесь, если бы я хотел, чтобы перечислить все внешние ключи отношений с моделью, есть способ, чтобы обнаружить эти отношения (вперед и назад) автоматически? В частности, если модель 1 считывает класс Mdl_one (models.Model): Имя = models.CharField (max_length = 30) и модель 2 считывает класс Mdl_two (models.Model): mdl_one = models.ForeignKey (Mdl_one) Название = models.CharField ( max_length = 30) есть некоторые мета команды я могу запустить из Mdl_one (как Model_one () ._ meta.one_to_many), который говорит мне, что mdl_two имеет один-ко-многим внешнего ключа отношения с ним? Просто, что mdl_one и mdl_two могут быть связаны, не обязательно, что любые два объекта на самом деле?
Ed.
1

голосов
2

ответ
408

Просмотры

JPA (с Hibernate) reatach существующих объектов в @OneToMany -

У меня есть следующее (простой) отображение: @Entity общественного класса Role {@OneToMany (скачивает = FetchType.EAGER) частного Set <Privilege> привилегия; } Я хочу сделать следующее (упрощенно): Я создал роль (R1) с Привилегия объекта (P1) Я хочу, чтобы создать другую, новую роль (R2) и дать ему ту же привилегию (P1) Так что, когда новый R2 создан, он Набор привилегий также является новым (HashSet не PersistedSet), но он содержит существующий P1; Кажется, что Hibernate не в состоянии признать тот факт, что P1 уже существует и правильно упорствовать отношение я уже пытался следующее: сохранить новую роль (R2) с обоими entityManager.persist и entityManager.merge добавить каскадный = {CascadeType. ALL} для отображения между ролями и Privilege попытался поджать привилегии (так, что объекты существуют в текущей сессии) перед сохранением новой роли я не пробовал (пока): определение @JoinColumn (имя = «PRIV_ID») на отображение делать больше операций вручную (например, первая сохраняющиеся пустой Role лица и их обновление привилегиях) - последнее средство я имею в виду, что это довольно стандартный UseCase, так что, возможно, я что-то, что мешает мне упорствовать в этом отсутствует ассоциация должным образом. Есть идеи? Благодарю. поэтому, возможно, я что-то, что мешает мне упорствовать эту ассоциацию должным образом отсутствует. Есть идеи? Благодарю. поэтому, возможно, я что-то, что мешает мне упорствовать эту ассоциацию должным образом отсутствует. Есть идеи? Благодарю.
Eugen
1

голосов
1

ответ
1.5k

Просмотры

Двунаправленный One-To-Many-связь между двумя (таблицы в классе) -inheritance деревьев

РЕЗЮМЕ Скажем, у меня есть два простых @Entity наследования деревьев (один абстрактный базовый класс с двумя конкретными классами реализации в каждом дереве) в InheritanceType.TABLE_PER_CLASS; и мне нужно двунаправленный @OneToMany соотношение, связывающее базовые классы с использованием @JoinColumn. Это должно производить четыре таблицы, по одному на конкретный класс, не так ли? EclipseLink производит пятую таблицу для одного из абстрактных базовых классов, которые не имеют смысла для меня. Рассмотрим следующий пример (это не реальный пример, это как раз о JPA): Пример Collection является абстрактным корень первого дерева наследования и реализатор в @OneToMany отношении: @Entity @Inheritance (стратегия = InheritanceType.TABLE_PER_CLASS) общественного абстрактного класса Collection {@Id @GeneratedValue публика долго ID; @OneToMany (mappedBy = "коллекция" ) общественности элементы списка = новый ArrayList (); } PhysicalCollection и VirtualCollection являются конкретными реализациями Коллекции: @Entity общественного класса PhysicalCollection расширяет набор {} @Entity общественного класс VirtualCollection расширяет набор {} Медиа является абстрактным корнем второго дерева наследования и реализатора в @ManyToOne отношении: @Entity @Inheritance (стратегия = InheritanceType.TABLE_PER_CLASS) общественные абстрактный класс СМИ {@Id @GeneratedValue общественность длинный идентификатор; @ManyToOne @JoinColumn (обнуляемый = ложь) сбор общественности сбора; } CdMedia и TapeMedia являются конкретными реализациями медиа: @Entity общественного класса CdMedia расширяет СМИ {} @Entity общественного класс TapeMedia расширяет Медиа {} РЕЗУЛЬТАТ Как я уже сказал, EclipseLink будет производить пять таблиц из этого (не возражает таблицу последовательности): MySQL> SHOW TABLES; + -------------------- + | Tables_in_test | + -------------------- + | CDMEDIA | | СМИ | | PHYSICALCOLLECTION | | ПОСЛЕДОВАТЕЛЬНОСТЬ | | TAPEMEDIA | | VIRTUALCOLLECTION | + -------------------- + 6 строк в наборе (0,00 сек) и неожиданная таблица СМИ будут иметь бесполезное определение (внешний ключ целевые изменяют семантику, когда переименование PhysicalCollection ): CREATE TABLE `` MEDIA` (COLLECTION_ID` BIGINT (20) NOT NULL, то КЛЮЧ `FK_MEDIA_COLLECTION_ID` (` COLLECTION_ID`), скованность `FK_MEDIA_COLLECTION_ID` FOREIGN KEY (` COLLECTION_ID`) СПРАВОЧНЫЙ PHYSICALCOLLECTION` ( `ID`)) ДВИГАТЕЛЬ = InnoDB DEFAULT CHARSET = utf8 | ВОПРОСЫ ли мои expectiations правильно? (Создать 4 таблицы, а не 5) Может ли кто-нибудь подтвердить, что это ошибка в EclipseLink? Если не ошибка, вы можете указать, где я допустил ошибку? + -------------------- + | Tables_in_test | + -------------------- + | CDMEDIA | | СМИ | | PHYSICALCOLLECTION | | ПОСЛЕДОВАТЕЛЬНОСТЬ | | TAPEMEDIA | | VIRTUALCOLLECTION | + -------------------- + 6 строк в наборе (0,00 сек) и неожиданная таблица СМИ будут иметь бесполезное определение (внешний ключ целевые изменяют семантику, когда переименование PhysicalCollection ): CREATE TABLE `` MEDIA` (COLLECTION_ID` BIGINT (20) NOT NULL, то КЛЮЧ `FK_MEDIA_COLLECTION_ID` (` COLLECTION_ID`), скованность `FK_MEDIA_COLLECTION_ID` FOREIGN KEY (` COLLECTION_ID`) СПРАВОЧНЫЙ PHYSICALCOLLECTION` ( `ID`)) ДВИГАТЕЛЬ = InnoDB DEFAULT CHARSET = utf8 | ВОПРОСЫ ли мои expectiations правильно? (Создать 4 таблицы, а не 5) Может ли кто-нибудь подтвердить, что это ошибка в EclipseLink? Если не ошибка, вы можете указать, где я допустил ошибку? + -------------------- + | Tables_in_test | + -------------------- + | CDMEDIA | | СМИ | | PHYSICALCOLLECTION | | ПОСЛЕДОВАТЕЛЬНОСТЬ | | TAPEMEDIA | | VIRTUALCOLLECTION | + -------------------- + 6 строк в наборе (0,00 сек) и неожиданная таблица СМИ будут иметь бесполезное определение (внешний ключ целевые изменяют семантику, когда переименование PhysicalCollection ): CREATE TABLE `` MEDIA` (COLLECTION_ID` BIGINT (20) NOT NULL, то КЛЮЧ `FK_MEDIA_COLLECTION_ID` (` COLLECTION_ID`), скованность `FK_MEDIA_COLLECTION_ID` FOREIGN KEY (` COLLECTION_ID`) СПРАВОЧНЫЙ PHYSICALCOLLECTION` ( `ID`)) ДВИГАТЕЛЬ = InnoDB DEFAULT CHARSET = utf8 | ВОПРОСЫ ли мои expectiations правильно? (Создать 4 таблицы, а не 5) Может ли кто-нибудь подтвердить, что это ошибка в EclipseLink? Если не ошибка, вы можете указать, где я допустил ошибку?
Chronos
1

голосов
1

ответ
5.6k

Просмотры

Cannot Delete parent row with JPA @OneToMany Relationship

In my Java EE application, I have two persistent entities Worklist and Task with these JPA relationships: Worklist entity: public class WorkList implements Serializable { ... @OneToMany(cascade={CascadeType.PERSIST, CascadeType.REMOVE} , mappedBy ="worklist") private List tasks; ... } And the Task entity: public class Task implements Serializable { ... @ManyToOne private WorkList worklist; ... } I indicated the cascade type in Worklist as: cascade={CascadeType.PERSIST, CascadeType.REMOVE} So, I can persist a Worklist and a list of tasks that are associated to this Worklist but I have a problem when I try to delete a Worklist and I have this exception: Avertissement: Local Exception Stack: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`scopedata`.`TASKS`, CONSTRAINT `FK_TASKS_WORKLIST_id` FOREIGN KEY (`WORKLIST_id`) REFERENCES `WORKLISTS` (`id`)) Error Code: 1451 Call: DELETE FROM WORKLISTS WHERE ((id = ?) AND (version = ?)) bind => [2 parameters bound] Query: DeleteObjectQuery(WokList{id=bbf05bdb-1314-4b07-9f4e-69898b800c00, creation=Thu Nov 28 08:39:21 CET 2013, startDate=Thu Nov 07 00:00:00 CET 2013, endDate=Fri Nov 15 00:00:00 CET On the other side, I can successfully delete a Task. This is the methode in the WorklistManager.java that removes a worklist @Override public boolean deleteWorkList(WorkList workList) { if (findWorkList(workList)) { em.remove(em.merge(workList)); return true; } return false; } Then, I call this methode in the Managed Bean: public String deleteWorkList() { workListManagerLocal.deleteWorkList(selectedWorkList); return "index"; } I am working with: JPA2 and Glassfish 3.1.2.2.
Reem
1

голосов
1

ответ
905

Просмотры

Yii - One to many update form

I have a one to many relationship where a movie can have many youtubeclips.. Ive managed to create the models and display the movie data inside the update form. I now need to be able to create a loop of some sort to out put my many relationship data into the form.. But cant seem to figure out how to do it.. This is what I have so far.. MovieController -- public function actionUpdate($id) { $model=$this->loadModel($id); $modelYoutubeVideo=$this->loadYoutubeVideoModel($id); $modelTwitterFeed=$this->loadTwitterModel($id); if(isset($_POST['Movie'])) { $model->attributes=$_POST['Movie']; if($model->save()) $this->redirect(array('view','id'=>$model->id)); } $this->render('update',array( 'model'=>$model, 'modelYoutubeVideo'=>$modelYoutubeVideo, 'modelTwitterFeed'=> $modelTwitterFeed )); } Update Form -- Need to Create a loop which outputs my data from the many relations ship table -- Movie Relationships -- public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( 'competitions' => array(self::HAS_MANY, 'Competition', 'movie_id'), 'studio' => array(self::BELONGS_TO, 'Studio', 'studio_id'), 'country' => array(self::BELONGS_TO, 'Country', 'country_id'), 'movieRating' => array(self::BELONGS_TO, 'MovieRating', 'movie_rating_id'), 'mapPin' => array(self::BELONGS_TO, 'MapPin', 'map_pin_id'), 'twitterFeeds' => array(self::HAS_MANY, 'TwitterFeed', 'movie_id'), 'YoutubeVideo' => array(self::HAS_MANY, 'YoutubeVideo', 'movie_id'), ); }
user3355603
1

голосов
1

ответ
34

Просмотры

Доступ к конкретным пользователям для работы с базами данных отношений

Я работаю над проектом Django, который имеет несколько пользователей, которые должны иметь возможность взаимодействовать друг с другом, например, отправка сообщений или зарядки друг друга. Однако я не уверен, как именно я поддержал, чтобы сделать это. У меня есть несколько моделей, как это: класс Транзакции (models.Model): #sendingUser = OneToOneField () #recievingUser = OneToOneField () сумма = models.DecimalField (max_digits = 11, decimal_places = 2) time_stamp = models.DateTimeField (auto_now_add = True) transaction_cleared = models.BooleanField (по умолчанию = False, пусто = False, нуль = False) То, что я хотел бы сделать, это иметь sendingUser быть привязан к пользователю в настоящее время вошли в систему и принимающему пользователю быть привязан к пользователю, что вошли в систему пользователь указывает. Имеет ли делать что-то вроде sendingUser = OneToOneField (User) дают мне пользователю, который в настоящее время вошли в систему? Я считаю, что это то, что этот учебник говорит мне делать, http://blog.robinpercy.com/2010/04/25/django-onetoonefields/, но я не совсем уверен. Что я положил в #recievingUser = OneToOneField (), чтобы получить доступ к пользователю в настоящее время не вошли в систему? Я пытался найти что-то в Документах или на SO, но я не совсем уверен, что я должен искать. Любая помощь будет принята с благодарностью.
user3282276
1

голосов
1

ответ
879

Просмотры

код первой миграции добавить один-ко-многим

Я в настоящее время есть «сервер» объект, определяемый как таковой: общественный класс EntityServer {общественности Int Id {получить; задавать; } Публичная строка Name {получить; задавать; }} Я хотел бы добавить новый «Host» объект, определяемый как таковой: общественный класс EntityHost {общественности Int Id {получить; задавать; } Публичная строка Name {получить; задавать; } Публичная строка PublicIP {получить; задавать; } частные _servers ICollection; публичные серверы виртуальных ICollection {получить {вернуться _servers ?? (_Servers = новый HashSet ()); } Множество {_servers = значение; }}} Таким образом, я добавил общественности EntityHost хостинга виртуальных {получить; задавать; } К моему серверу сущности связать эти объекты с одного до многих отношениях modelBuilder.Entity () .HasMany (х => x.Servers) .WithRequired (х => x.Host); И породил миграцию acordingly: общественное MultiHosts частичного класса: DbMigration {общественного переопределение аннулируются Up () {CreateTable ( "dbo.EntityHosts", с => новый {Id = c.Int (обнуляемым: ложь, идентичность: истина), Name = c.String (), PublicIP = c.String ()}) .PrimaryKey (т => t.Id); AddColumn ( "dbo.EntityServers", "Host_Id", с => c.Int (обнуляемым: ложь)); CreateIndex ( "dbo.EntityServers", "Host_Id"); AddForeignKey ( "dbo.EntityServers", "Host_Id", "dbo.EntityHosts", "Id", cascadeDelete: правда); } Общественного переопределение недействительного вниз () {DropForeignKey ( "dbo.EntityServers", "Host_Id", "dbo.EntityHosts"); DropIndex ( "ДБО.
Remy Grandin
1

голосов
1

ответ
1.6k

Просмотры

Предикат данные IOS Основные один-к-многим

У меня есть две сущности, как показывают на рисунке. Мне нужно получить конкретное назначение и все связанные с ними участников, где посетитель не удаляются (hasDeleted! = 1). Я попытался с различными форматами предиката. Ниже приведены два основных сказуемое я пытался и не в состоянии получить любой из этих предикатов работать. Не могли бы вы помочь мне преодолеть эту проблему? NSPredicate * predicate1 = [NSPredicate predicateWithFormat: @ "Objectname =% @ И ObjectId =% я и подзапрос (участники, $ х, $ x.hasDeleted = 1!) @ Подсчитывать = 0.!", [Self.userDefaults stringForKey: OBJECT_NAME ], [[self.userDefaults objectForKey: OBJECT_ID] intValue]]; NSPredicate * predicate2 = [NSPredicate predicateWithFormat: @ "Objectname =% @ И ObjectId =% я и (ANY attendees.hasDeleted = 1!)" [Self.userDefaults stringForKey: OBJECT_NAME], [[self.userDefaults objectForKey: OBJECT_ID] intValue]]; Список Назначение TableView Детальный вид назначения, где детали посетитель может увидеть. Fetch код результата контроллера: - (NSFetchedResultsController *) fetchedResultsController {если (! _FetchedResultsController = ноль) {вернуться _fetchedResultsController; } NSFetchRequest * fetchRequest = [[NSFetchRequest Alloc] инициализации]; NSEntityDescription * объект = [NSEntityDescription entityForName: @ "Слушатель" inManagedObjectContext: self.managedObjectContext]; [FetchRequest setEntity: сущность]; не NSSortDescriptor * sortDescriptor = [[NSSortDescriptor Alloc] initWithKey: @ "UUID" восходящие: NO]; NSArray * sortDescriptors = @ [sortDescriptor]; [FetchRequest setSortDescriptors: sortDescriptors]; NSPredicate * предикат = [NSPredicate predicateWithFormat: @ "назначение. userDefaults stringForKey: ИМЯ_ОБЪЕКТ], [[self.userDefaults objectForKey: OBJECT_ID] intValue]]; [FetchRequest setPredicate: предикат]; NSFetchedResultsController * aFetchedResultsController = [[NSFetchedResultsController Alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: ноль cacheName: ноль]; aFetchedResultsController.delegate = самостоятельно; self.fetchedResultsController = aFetchedResultsController; NSError * ошибка = ноль; если ([self.fetchedResultsController performFetch: & ошибка]!) {NSLog (@ "Unresolved ошибки% @,% @", ошибка, [ошибка USERINFO]); прервать (); } Вернуть _fetchedResultsController; } userDefaults stringForKey: ИМЯ_ОБЪЕКТ], [[self.userDefaults objectForKey: OBJECT_ID] intValue]]; [FetchRequest setPredicate: предикат]; NSFetchedResultsController * aFetchedResultsController = [[NSFetchedResultsController Alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: ноль cacheName: ноль]; aFetchedResultsController.delegate = самостоятельно; self.fetchedResultsController = aFetchedResultsController; NSError * ошибка = ноль; если ([self.fetchedResultsController performFetch: & ошибка]!) {NSLog (@ "Unresolved ошибки% @,% @", ошибка, [ошибка USERINFO]); прервать (); } Вернуть _fetchedResultsController; } NSFetchedResultsController * aFetchedResultsController = [[NSFetchedResultsController Alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: ноль cacheName: ноль]; aFetchedResultsController.delegate = самостоятельно; self.fetchedResultsController = aFetchedResultsController; NSError * ошибка = ноль; если ([self.fetchedResultsController performFetch: & ошибка]!) {NSLog (@ "Unresolved ошибки% @,% @", ошибка, [ошибка USERINFO]); прервать (); } Вернуть _fetchedResultsController; } NSFetchedResultsController * aFetchedResultsController = [[NSFetchedResultsController Alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: ноль cacheName: ноль]; aFetchedResultsController.delegate = самостоятельно; self.fetchedResultsController = aFetchedResultsController; NSError * ошибка = ноль; если ([self.fetchedResultsController performFetch: & ошибка]!) {NSLog (@ "Unresolved ошибки% @,% @", ошибка, [ошибка USERINFO]); прервать (); } Вернуть _fetchedResultsController; } NSError * ошибка = ноль; если ([self.fetchedResultsController performFetch: & ошибка]!) {NSLog (@ "Unresolved ошибки% @,% @", ошибка, [ошибка USERINFO]); прервать (); } Вернуть _fetchedResultsController; } NSError * ошибка = ноль; если ([self.fetchedResultsController performFetch: & ошибка]!) {NSLog (@ "Unresolved ошибки% @,% @", ошибка, [ошибка USERINFO]); прервать (); } Вернуть _fetchedResultsController; }
Chinthaka
1

голосов
1

ответ
501

Просмотры

Google App Engine (NDB): One-To-One and One-To-Many relationship

Я строю веб-приложение (Django и Google, ОПРС) и должны структурировать свои модели в настоящее время. Я прочитал много примеров о том, как реализовать один-ко-многим, но - если честно - я еще больше запутался прямо сейчас, прочитав их. Позволь мне описать мою проблему с аналогичным примером: У меня есть пользователи, и каждый пользователь может читать несколько книг. Пользователь может прекратить чтение в любое время и прогресс сохраняется. Даже если книга была закончена, прогресс будет сохранен и никогда не удаляется. Мне нужно, чтобы проверить ход выполнения всех книг пользователь начал читать все время, так что это должно быть эффективным и должны требовать в несколько децибел читается как это возможно. Количество книг не слишком много (<1000), а также книги, тонкие (скажем, только одна глава, название, автор, это его). Это масса прогресса и постоянный поиск прогресса, что я» м, опасаясь, так как каждый пользователь имеет свой собственный прогресс, чтобы, вероятно, каждая книга. Как я могу структурировать мои модели лучше всего этим требованиям? Если я использую StructuredProperty в моей модели пользователя будет размер книг, которые refered в Прогрессе засчитывается пределе X МБ (надеюсь, что нет)? Если нет, я думаю, что-то, как это лучший способ пойти (я могу читать прогресс быстро, без дополнительного поиска, и если получить необходимую книгу из БД). класс Book (ndb.model): имя = ndb.StringProperty (требуется = True) ... класс Progress (ndb.model): книга = ndb.KeyProperty (вид = "Книга", требуется = True) last_page_read = ndb.IntegerProperty (требуется = True, по умолчанию = 0) ... класс пользователя (ndb.model): имя = ndb.StringProperty (требуется = True) books_and_progress = ndb.StructuredProperty (Прогресс, неоднократный = True) ...
JustABit
1

голосов
1

ответ
2.8k

Просмотры

Как сохранить список в модели Django

Доброе утро, мой вопрос, как я могу хранить список Livre для каждого пользователя в моем Django model.py, которым выглядит следующим образом: класс Livre (models.Model): кинорежиссёр = models.ForeignKey (Auteur) титр = models.CharField ( max_length = 50) жанр = models.ForeignKey (жанр) PUBLISH_DATE = models.DateField () Я хочу, чтобы мой Пользователь может столько Livre, как они хотят (0 возможно): от django.db импортных моделей django.contrib.auth.models класса импорта Пользователь Lecteur (Пользователь): Bibliotheque = models.??????(Livre) ... не касаясь модели Livre. Для того, чтобы коротко я хочу OneToMany отношения от пользователя к Livre. Спасибо за чтение меня.
Totem
1

голосов
1

ответ
3.3k

Просмотры

Spring, JPA и Hibernate несколько запросов выполняются из одного SQL заявления

Я новичок в Spring, JPA и Hibernate, поэтому извинения, если я не поэтапный этот вопрос правильно. Я получил приложение, использующее эти рамки, что имеет множество проблем с производительностью. Я сделал многочисленные поиски без толка - вероятно, из-за мою неспособность сформулировать мой вопрос правильно. Сценарий (в двух словах), что, когда один SQL оператор выполняется через EntityManager, это в свою очередь вызывает связанный запрос для каждой строки результирующего набора. В моем случае заявление один SQL может привести сотни (а в некоторых случаях тысяч) соответствующих отчетов SQL, который будет вызван - убийство нашего сервера. Надуманный пример, может быть: открытый класс работа {общественность долго JobId; имя общественного строки; Операции с общественностью Список; } сделка общественного класса {общественного долго TransactionID акции общественного списка; } Общественного класса со {общественности долго stockId; имя общественного строки; } Код использует заявление, как: String jpaQuery = «выберите отчетливый J из работы J, где j.jobId =: JobId порядка по имени возрастание»; запрос Запрос = entityManager.createQuery (jpaQuery); // набор параметров ... // Это возвращает список, содержащий списки транзакций и фондовых объектов возвращающие query.getResultList (); Выполнение этого единичных результатов SQL Statement в нескольких операторов SQL выполняется (которые можно просмотреть в журнале TOMCAT / затмение консоли), так что они в настоящее время вызывается кодом / рамки. EntityManager не был продлен, поэтому рамки (ы) делают работу. Теперь мой вопрос - спасибо за чтение этого далеко ... В Spring, JPA и Hibernate, что было бы лучше всего подойти к этому так один вызов к базе данных возвращает необходимые объекты без многократных запросов к базе данных? Моя мысль подхода состоит в том, чтобы иметь один оператор SQL для вызова хранимой процедуры, которая может либо возвращать несколько наборов результатов или только один набор результатов, содержащий данные для всех объектов, связанных с и имеет структуру этого остальное (инстанцировании соответствующие объектов). То, что я понятия не имею о том, как подойти к этому в среде Spring / JPA / Hibernate. Может кто-то пожалуйста, указать мне на ресурсы, которые дали бы мне примеры / идеи о том, как подойти к этому? Или ключевые слова для поиска? Версия: Spring: 3.0.6.Release Hibernate: 3.5.0-Beta-2 Большое спасибо Steve которые могут либо возвращать несколько наборов результатов или только один результирующий набор, содержащий данные для всех объектов, связанных с и имеют структуру этого остальные (инстанцирования соответствующие объекты). То, что я понятия не имею о том, как подойти к этому в среде Spring / JPA / Hibernate. Может кто-то пожалуйста, указать мне на ресурсы, которые дали бы мне примеры / идеи о том, как подойти к этому? Или ключевые слова для поиска? Версия: Spring: 3.0.6.Release Hibernate: 3.5.0-Beta-2 Большое спасибо Steve которые могут либо возвращать несколько наборов результатов или только один результирующий набор, содержащий данные для всех объектов, связанных с и имеют структуру этого остальные (инстанцирования соответствующие объекты). То, что я понятия не имею о том, как подойти к этому в среде Spring / JPA / Hibernate. Может кто-то пожалуйста, указать мне на ресурсы, которые дали бы мне примеры / идеи о том, как подойти к этому? Или ключевые слова для поиска? Версия: Spring: 3.0.6.Release Hibernate: 3.5.0-Beta-2 Большое спасибо Steve Может кто-то пожалуйста, указать мне на ресурсы, которые дали бы мне примеры / идеи о том, как подойти к этому? Или ключевые слова для поиска? Версия: Spring: 3.0.6.Release Hibernate: 3.5.0-Beta-2 Большое спасибо Steve Может кто-то пожалуйста, указать мне на ресурсы, которые дали бы мне примеры / идеи о том, как подойти к этому? Или ключевые слова для поиска? Версия: Spring: 3.0.6.Release Hibernate: 3.5.0-Beta-2 Большое спасибо Steve
TCBOOne
1

голосов
1

ответ
3.5k

Просмотры

Составной ключ с одним внешним ключом OneToMany Spring загрузки JPA Informix

Это текущая структура базы данных Informix: Таблица: msg_body Идентификатор (ПК) Kanal отправителя ... Таблица: msg_user ID (PK, FK) empfaenger (ПК) точка привязки ... А msg_user имеет один или несколько msg_bodies. msg_body класс домена:. импорт javax.persistence *; импорт java.io.Serializable; импорт java.sql.Timestamp; @Entity @Table (имя = "msg_body") общественный класс MessageBody реализует Serializable {@Id @column (имя = "ID") частное ИНТ mb_id; @Column (имя = "Kanal") частный канал строки; @Column (имя = "gueltig_von") частное Отметка validFrom; @Column (имя = "gueltig_bis") частное Отметка validTo; @Column (имя = «отправитель») частное строки отправитель; @Column (имя = "erstell_datum" ) Частное Отметка createDate; @Column (имя = "prioritaet") частное ИНТ приоритет; @Column (имя = "Nachricht") частная строка сообщения; @Column (имя = «Информация») частная информация Строки; @Column (имя = "gueltig") частный символ действителен; @ManyToOne частный MessageUser messageUser; // геттер + сеттер} домен msg_user класс: импорт java.io.Serializable; импорт java.sql.Timestamp; импорт java.util.HashSet; импорт java.util.Set; импорт javax.persistence *. @Entity @Table (имя = "msg_user") общественный класс MessageUser реализует Serializable {@EmbeddedId UserId mu_id; @MapsId ( "mb_id") @JoinColumn (имя = "mu_id", referencedColumnName = "идентификатор") @OneToMany частного Set msg_bodies = новый HashSet (); @Column (имя = " SpringBootServletInitializer; импорт org.springframework.context.annotation.ComponentScan; импорт org.springframework.context.annotation.Configuration; импорт org.springframework.data.jpa.repository.config.EnableJpaRepositories; @Configuration @ComponentScan ( "at.company.badge_service") @EnableAutoConfiguration @EnableJpaRepositories (basePackages = { "at.company.badge_service.repository"}) общественного класса Применение распространяется SpringBootServletInitializer {государственной статической силы основных (String [] арг) {SpringApplication .run (Application.class, арг); }} Цель состоит в том, чтобы запустить этот оператор: открытый интерфейс BARepository расширяет JpaRepository {@Query ( "SELECT COUNT (mu.id) FROM MessageUser мю WHERE mu.receiver =: имя пользователя") Long countBA (@param ( "имя пользователя") Струнные имя пользователя); } приложение. определенный в классе пути ресурса [орг / springframework / загрузки / Автоконфигурирование / ОРМ / JPA / HibernateJpaAutoConfiguration.class]: Вызов метода инициализации не удалось; вложенное исключение составляет java.lang.NullPointerException в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1566) ~ [весна-бобы-4.1.5.RELEASE.jar: 4.1.5.RELEASE] на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:539) ~ [весна-бобы-4.1.5.RELEASE.jar: 4.1.5.RELEASE] в org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:476) ~ [весна-бобы-4.1.5.RELEASE.jar: 4.1.5.RELEASE] на org.springframework.beans.factory.support. catalina.mbeans.MBeanFactory.createStandardContext (MBeanFactory.java:565) ... 58 общих кадров опущенные в sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) при sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в Java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:603) в java.lang.Thread.run (Thread.java:722) Вызванный: org.springframework.beans.factory.BeanCreationException: Ошибка при создании боб с именем «EntityManagerFactory», определенный в классе пути ресурса [орг / springframework / загрузки / Автоконфигурирование / ОРМ / JPA / HibernateJpaAutoConfiguration.class]: Вызов метода инициализации не удалось; вложенное исключение java.lang.NullPointerException в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory. ContainerBase.addChild: старт: org.apache.catalina.LifecycleException: Не удалось запустить компонент [StandardEngine [Каталина] .StandardHost [локальный] .StandardContext [/ badge_service]] в org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase. Java: 904) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:601) в org.apache.tomcat.util.modeler.BaseModelMBean.invoke (BaseModelMBean.java:301) ... более 31 я пытался найти решение в Интернете, но ни один из них не работал в моем случае. Особенно внешний ключ в композиционном ключе представляется редкая проблема. Я хорошо знаю, что это было бы гораздо проще добавить суррогатный ключ к msg_user столу, но я должен решить именно эту проблему, поэтому я был бы рад, если бы кто-то может показать мне, как кодировать классы домена с отношениями в правильном направлении. Если вам нужна дополнительная информация, не стесняйтесь задавать их! Спасибо заранее!
Jasmin Janine
1

голосов
1

ответ
901

Просмотры

Фильтр объектов основных данных, от отношений

У меня есть два объекта: Категория и пункт. Пункт имеет имя поле, поле цены и количество поле. A Категория имеет имя поля. Категория также имеет много Items. Когда я получить доступ к моему Tableview категорий Я хочу, чтобы отобразить все элементы, относящиеся к этой категории. Ниже мой код, как я устанавливаю отношения при добавлении нового товара, а также, когда категория неправдоподобна, чтобы отобразить все его элементы. Могу ли я не правильно экономить отношения? Сохранение отношения Func saveItem (Name: String, количество: Int, цена: String) {пусть AppDelegate = UIApplication.sharedApplication () делегат как.! AppDelegate пусть managedContext = appDelegate.managedObjectContext! пусть сущности = NSEntityDescription.entityForName ( "Item", inManagedObjectContext: managedContext) пусть пункт = NSManagedObject (объект: лица !, insertIntoManagedObjectContext: managedContext) ошибка вар: NSError? item.setValue (имя, forKey: "имя") item.setValue (количество, forKey: "количество") item.setValue (цена, forKey: "цена") item.setValue (selectedCategory, forKey: "категория") // selectedCategory: родитель этого нового элемента selectedCategory.setValue (NSOrderedSet (объект: пункт), forKey: "пункт"), если managedContext.save (& ошибка) {Println ( "не удалось сохранить \ (ошибка), \ (ошибка ?.! USERINFO) ")} еще {items.append (пункт) self.fetchCategories (" ")}} Fetching пункты категории Func fetchItems () {пусть AppDelegate = UIApplication.sharedApplication (). делегат, как! AppDelegate пусть managedContext = appDelegate.managedObjectContext! пусть sortDescriptor = NSSortDescriptor (ключ: " String) ошибка вар: NSError? пусть fetchedResults = managedContext.executeFetchRequest (fetchRequest, ошибка: & ошибка), как? [NSManagedObject], если пусть результаты = fetchedResults {пункты = результаты} еще {Println ( "Не удалось извлечь \ (ошибка), \ (ошибка .userInfo!)")}} Моей модели данных String) ошибка вар: NSError? пусть fetchedResults = managedContext.executeFetchRequest (fetchRequest, ошибка: & ошибка), как? [NSManagedObject], если пусть результаты = fetchedResults {пункты = результаты} еще {Println ( "Не удалось извлечь \ (ошибка), \ (ошибка .userInfo!)")}} Моей модели данных
Mike
1

голосов
1

ответ
234

Просмотры

Relationship to different tables in SQLalchemy

I have multiple tables. All tables have multiple columns that could not logically be stored in one merged table. class Foo(Model): foo_id = Column(Integer(unsigned=True), primary_key=True, nullable=False) foo_data = Column(...) class Bar(Model): bar_id = Column(Integer(unsigned=True), primary_key=True, nullable=False) bar_info = Column(...) class Baz(Model): baz_id = Column(Integer(unsigned=True), primary_key=True, nullable=False) baz_content = Column(...) Now I want to save changes in a history table: class Diff(Model): diff_id = Column(...) foreign_id = Column(Integer(unsigned=True), index=True, nullable=False) foreign_table = Column(Char(16, collation='ascii_bin'), index=True, nullable=False) class SingleDiff(Model): ... diff = relationship(Diff, backref=backref('changes', uselist=True, ...)) Now my problem is: How can I populate Diff.foreign_id in the same commit when inserting a new Foo, Bar, or Baz? This works, but if there should be a problem to insert the Diff then it is too late to rollback the changes to foo: foo = Foo(foo_data='TODO: changes table names') try: session.add(foo) session.commit() # first commit except ...: .... else: try: diff = Diff(changes=[...]) diff.foreign_id = foo.foo_id diff.foerein_table = 'foo' session.add(diff) session.commit() # second commit except ...: raise Exception('Cannot rollback commit #1 anymore :-(') For normal relationships the id is inserted automagically: class FooDiff(Model): diff_id = Column(...) foo_id = Column(Integer(unsigned=True), ForeignKey(...), ...) foo = relationship(Foo) But I don't have Diff.foo, because Diff.foreign_id could point to many different tables.
kay
1

голосов
2

ответ
549

Просмотры

Grails Критерии динамических и условия один-ко-многим

У меня есть домен класс класса Url {UUID Идентификационная строка URL статического hasMany = [Показания: UrlIndication] ...} И класс UrlIndication {UUID ID Имя Строки статический belongsTo = Url ...} Я хочу, чтобы выбрать URLs так, что у него есть все необходимые UrlIndication элементы в данном списке indicationsId. Для этого я использую ассоциации и критерии, как этот один: показания {и {{indicationsId.each indication-> эк ( «ид», UUID.fromString (индикация в виде строки))}}} Однако, все, что я получил это пустой результат , Можете ли вы предложить какие-либо изменения / другие методы, так что я могу это сделать? заранее спасибо
innovatism
1

голосов
1

ответ
27

Просмотры

Экспресс: Вставить документ в существующем документе

Я разрабатываю приложение в экспресс, узел и Монго является базой данных. У меня есть пользователи коллекции, и пользователь может иметь Mutiple зарегистрированных идентификаторов. Это нравится отношение один-ко-многим. Я пытаюсь встроить документ в коллекции пользователя, как это: пост (функция (Req, Рез, следующий) {вар PID = req.body.pid; уаг с.и.д. = req.body.sid; вар rfname = req.body. rfname; вар дез = req.body.des; вар бренд = req.body.brand; вар модели = req.body.model; вар последовательные = req.body.serial; вар местоположение = req.body.location; вар обр = {PID: 'PID', SID: 'с.и.д.', rfname: 'rfname', дез: 'де', бренд: 'бренд', модель: 'модель', серийный: 'последовательный', местоположение: 'местоположение'}; mongoose.model ( 'Пользователь') findOne (. { 'pemail': req.session.email}, функция (ERR, Пользователь) {если (ERR) {} еще {user.registeredId = обр; user.save (функция (ERR) {если (ERR) {} еще {res.render ( 'пользователь / регистре', { 'успех': 'dfhlaksdhfh'});}})}}); } Моя схема пользователя, как это: вар мангуст = требуется ( «мангуст»); вар userSchema = новый mongoose.Schema ({адрес электронной почты: String, пароль: String, имя_файла: String, LNAME: String, plang: String, жаргон: String, страна: String, состояние: String, город: String, почтовый индекс: String, address1 : String, address2: String, pemail: String, semail: String, возраст: String, пол: String, pphone: String, sphone: String, q1: String, a1: String, q2: String, a2: String, cfname: String , clname: String, cemail: Строка}); mongoose.model ( 'User', userSchema); Направь меня, то, что я делаю неправильно, потому что он не вставлять документ в существующем документе. Мне нужно, чтобы определить, что в схеме делать, если да, то как?
Saani
1

голосов
1

ответ
404

Просмотры

xml Hibernate mapping, many to one with composite ids and different column names

I am a beginner in hibernate. Basically I want to make UserId1 and UserId2 foreign keys of UserId. I Know I need to use many to one and one to many, but I can't seem to understand how to use them because my columns have different names. Any help is appreciated! This is my hibernate.hbm.xml file So basically both ids in my track class should point to the id in the profile class my userTrack class: public class UserTrack implements Serializable { private int UserProfileId1; private int UserProfileId2; public int getUserProfileId1() { return UserProfileId1; } public void setUserProfileId1(int userProfiletId1) { UserProfiletId1 = userProfileId1; } public int getUserProfileId2() { return UserProfileId2; } public void setUserProfileId2(int userProfileId2) { UserProfileId2 = userProfileId2; } } My profile class: public class UserProfile { private int UserProfileId; public int getUserProfileId() { return UserProfileObjectId; } public void setUserProfileId(int userProfileId) { UserProfileId = userProfileId; } }
amoh
1

голосов
1

ответ
137

Просмотры

Что является лучшей практикой в ​​Pentaho DI (Kettle) для преобразования CSV в один ко многим отношений

Я новичок в Pentaho DI (ранее Kettle) и я поручено принимать данные в формате CSV и заполнение таблиц в СУБД, которые находятся в «один ко многим» отношения. Вот пример того, как данные CSV структурирована: OrderID, CustomerName, дата, общая стоимость, LineItemNumber, LineItemDesc, LineItemQty, LineItemCost 101655, Мэри Смит, 2016-02-08,6.25,1 | 2 | 3 | 4, латук | Томаты | Зеленый лук | Огурцы, 1 | 2 | 4 | 2,1.00 | 2,50 | 0,75 | 2,00 ПРИМЕЧАНИЕ: несколько значений разделённых трубы (|) Мне нужно, чтобы преобразовать его в следующие таблицы: Я смотрел в несколько способов сделать это, но не хотите пропустить что-то просто из-за моей неопытности. Любой совет будет весьма признателен. Я придумал решение, но это выглядит очень сложным.
Andrew Soloninka
1

голосов
1

ответ
32

Просмотры

Не удается загрузить Core Data в ко многим атрибуте

Я не смог добавить и прочитать основные атрибуты данных в отношении один-ко-многим. После прочтения многих SO, Apple Docs и другие статьи, которые я до сих пор не достигли этого. Для того, чтобы сделать простой тест, я создал стандартный Master Detail App с Core Data. Это работает без каких-либо проблем для основного объекта. Зависимость основных данных, как показано ниже. Вот код, чтобы поместить некоторые тестовые данные в хранилище. Обратите внимание, что я пытаюсь добавить данные многих как набор для каждого InvItem и сделал атрибут трансформера списка ключевых слов. Я думал, что это был самый лучший подход, но, очевидно, что не работает здесь. функ seedInvItems (NUM: Int) {для индекса в 1 ... Num {пусть newManagedObject = NSEntityDescription.insertNewObjectForEntityForName ( "InvItem", inManagedObjectContext: kAppDelegate.managedObjectContext), как! InvItem newManagedObject.name = "Myname \ (индекс)" newManagedObject.category1 = "myCategory1x \ (индекс)" newManagedObject.compartment = "myCompartment \ (индекс)" newManagedObject.entryDate = NSDate () // и для взаимно многие отношения вар myStoreKeywordSet = Set () myStoreKeywordSet = [ "один", "два", "три"] // делать вставки только для усмехается myStoreKeywordSet.insert ( "четыре") пусть newManagedObject2 = NSEntityDescription.insertNewObjectForEntityForName ( "InvItemKeyword", inManagedObjectContext: kAppDelegate.managedObjectContext), как! InvItemKeyword newManagedObject2.keywordList = myStoreKeywordSet} // для в kAppDelegate. saveContext () пусть fetchRequestTest = NSFetchRequest (EntityName: "InvItem") пусть сортировщик: NSSortDescriptor = NSSortDescriptor (ключ: "имя", по возрастанию: правда) fetchRequestTest.sortDescriptors = [сортировщик] вар resultsTest: [InvItem]? делать {resultsTest = попробовать kAppDelegate.managedObjectContext.executeFetchRequest (fetchRequestTest), как? [InvItem] для объекта в resultsTest! {Пусть myRetrieveKeywordSet = object.invitemkeywords печать (myRetrieveKeywordSet)} // для в} поймать пусть ошибку как NSError {// что происходит при отказе печати ( "И executeFetchRequest ошибка \ (error.localizedDescription)")} // сделать улов } // seedInvItems для полноты картины, я сделал создать подклассы NSManagedObject для лиц Core Data. При запуске приложения, мастер детализация InvItem ведет себя, как ожидалось, но я не получаю хранения деталей к многим. Вот лог консоли (для одного InvItem): Опционально (неисправность отношения 'invitemkeywords' на управляемый объект (0x7f985a62bb70) (объект: InvItem; идентификатор: 0xd000000000700000; данные: {category1 = myCategory1x3; отсек = myCompartment3; entryDate = «2016-02 -09 2:10:21 +0000" , не invitemkeywords = ""; имя = myName3;})) Глядя на базу данных, нет данных для списка ключевых слов. Любая помощь будет оценена. Xcode 7.2.1 IOS 9,2 {Категория1 = myCategory1x3; Отсек = myCompartment3; entryDate = "2016-02-09 2:10:21 +0000"; invitemkeywords = ""; имя = myName3; })) Глядя на базе данных, нет данных для списка ключевых слов. Любая помощь будет оценена. Xcode 7.2.1 IOS 9,2 {Категория1 = myCategory1x3; Отсек = myCompartment3; entryDate = "2016-02-09 2:10:21 +0000"; invitemkeywords = ""; имя = myName3; })) Глядя на базе данных, нет данных для списка ключевых слов. Любая помощь будет оценена. Xcode 7.2.1 IOS 9,2
user2698617
1

голосов
1

ответ
549

Просмотры

Как заполнить форму редактирования (один ко многим отношений Laravel)

У меня есть одна форма, которая добавляет данные для двух различных таблиц (статьи и сделок). Статья имеет много сделок. Сделка имеет одну статью. Я не могу работать, как заполнить форму редактирования с данными таблицы сделок. Я знаю, что я делаю неправильно, но в данный момент он просто заполняет форму редактирования с длинным массивом. Я думаю, что нужно изменить контроллер Статьи и переменную формы стоимости. На данный момент я просто $ сделок на каждый день сделки. Я использую Laravel 5. Статью Таблица имеет: идентификатор, название, изображение, описание, адрес. Таблица сделок: ID, dealname, article_id, dayID. ФОРМА: {!! Форма :: модель ($ статья, [ 'маршрут' => [ 'articleUpdate_path', $ article-> ID] => верно, 'метод' 'файлы' => 'PATCH']) !!} {!! Форма :: ярлык ( 'название', 'TITLE') !!} {!! Форма :: текст ( «название», NULL, [ 'класс' => 'форма контроля']) !!} {!! $ Errors-> первый ( 'название', ': сообщение') !!} {!! Форма :: ярлык ( 'изображение', 'PHOTO') !!} {!! Форма :: файл ( 'изображение', NULL, [ 'класс' => 'форма контроля']) !!} {!! Форма :: метка ( 'Описание', 'Описание') !!} {!! Форма :: текстовое поле ( 'описание', NULL, [ 'класс' => 'форма контроля']) !!} {!! Форма :: ярлык ( 'dealname', 'понедельник') !!} {!! Форма :: текст ( 'dealname []', $ сделок, нулевой, [ 'класс' => 'форм-контроль']) !!} {!! Форма :: ярлык ( 'dealname', 'вторник') !!} {!! Форма :: текст ( 'dealname []', $ сделок, нулевой, [ 'класс' => 'форм-контроль']) !!} {!! Форма :: ярлык ( 'dealname', 'среды') !!} {! ! Форма :: текст ( 'dealname []', $ сделок, нулевой, [ 'класс' => 'форм-контроль']) !!} {!! Форма :: ярлык ( 'адрес', 'АДРЕС') !!} {!! Форма :: текст ( 'адрес', NULL, [ 'класс' => 'форма контроля']) !!} {!! Форма :: Close () !!} СТАТЬИ CONTROLLER общественная функция редактирования ($ ID) {$ статья = статья :: найти ($ ID); $ сделок = Deal :: списки ( 'dealname'); вернуться вид ( 'articles.edit', компактный ( 'статью', 'сделок')); } Класс Статья MODEL Статья распространяется Model {публичную функцию сделки () {вернуть $ this-> hasMany ( 'App \ Deal'); } Защищенный $ заполняемых = массив ( 'название', 'фотография', 'Описание', 'адрес'); } Класс DEAL MODEL Deal расширяет Model {публичную функцию статьи () {вернуть $ this-> belongsTo ( 'App \ Статья') -> withTimestamps (); } Защищенного $ заполняемый = массив ( 'dealname', 'article_id', 'dayID'); }
thomas jaunism
1

голосов
1

ответ
55

Просмотры

Слабый Refrence в классе возврата ноль при создании в инициализации первого класса

им пытаются создать слабый ссылочный класс в другом классе, в инициализации первого класса я создаю экземпляр второго класса, чтобы использовать его в функцию, но после того, как функция инициализации выполняется, второй класс разрушаться и возвращать ноль, вот пример кода //: Детские площадки - существительное: место, где люди могут играть импорт класс UIKit A {слабого вара B: B? инициализации () {NSLog ( "создаваемого") self.b = В ()} {Deinit NSLog ( "разрушенный")}} класс В {вар arrayOfA: Array = [] INIT () {NSLog ( "B Создан" )} Deinit {NSLog ( "B разрушаемый")} функ printSomething () {NSLog ( "напечатать что-то")}} тест FUNC () {пусть: А = А () AB .printSomething () NSLog ( "все еще в тестовое задание()" )} Тест () в консоли я видеть эту 2016-04-04 00: 34: 50.516 MyPlayground [20009: 921709] создаваемого 2016-04-04 00: 34: 50,516 MyPlayground [20009: 921709] б Создан 2016-04- 04 00: 34: 50,516 MyPlayground [20009: 921709] б разрушаемый 2016-04-04 00: 34: 50.527 MyPlayground [20009: 921709] еще в тесте () 2016-04-04 00: 34: 50.527 MyPlayground [20009: 921709 ] Разрушенный и вызов printSomething () возвратит ноль я не хочу создать класс B вне класса, а также я хочу его слабым для проблем утечки памяти. некоторые, как я хочу один ко многим отношений между двумя быстрым классом, так что я могу загрузить данные из функции 527 MyPlayground [20009: 921709] Разрушенный и вызов printSomething () возвратит ноль я не хочу создать класс B вне класса, а также я хочу его слабым для проблем утечки памяти. некоторые, как я хочу один ко многим отношений между двумя быстрым классом, так что я могу загрузить данные из функции 527 MyPlayground [20009: 921709] Разрушенный и вызов printSomething () возвратит ноль я не хочу создать класс B вне класса, а также я хочу его слабым для проблем утечки памяти. некоторые, как я хочу один ко многим отношений между двумя быстрым классом, так что я могу загрузить данные из функции
Mohammadalijf
1

голосов
1

ответ
97

Просмотры

The ForeignKeyAttribute on property 'MyField' on type 'Class1' is not valid

Борясь на зарубежном ключе с Entity Framework (1 ко многим отношений). class1: общественный частичный класс Class1 {общественности ИНТ Id {получить; задавать; } [ForeignKey ( "Class2_Id")] общественный класс 2 класс 2 {получить; задавать; } ...} Class2: общественный частичный класс Class2 {общественности ИНТ Id {получить; задавать; } Общественного виртуального ICollection Материал {получить; задавать; } ...} 1) Я попытался с fluentAPI: первый попытка: modelBuilder.Entity (.) HasMany (р => p.Stuff) .WithOptional () Карта (м => m.MapKey ( "Class2_Id".)). WillCascadeOnDelete (); . Вторая попытка: modelBuilder.Entity () HasRequired (я => i.Class2) .WithMany () Карта (м => m.MapKey ( "Class2_Id"));. 2) без fluentAPI: Я объявил Заинтересованный полю class2 таким образом: [Колонка ( "Class2")] общественность ИНТ Id {получить; задавать; } Даже (что, вероятно, не имеет смысла): [ForeignKey (»
A.D.
1

голосов
1

ответ
426

Просмотры

Многий-ко-многим самореференции спящей аннотации (с двумя лицами)

Мне нужна помощь с моим приложением. Я использую Hibernate + Postgresql + Maven. И я хочу, чтобы создать связь многих ко многим в базе данных без @ManyToMany аннотации, но с двумя @OneToMany аннотаций, но у меня есть некоторые проблемы с ним. У меня есть объект пользователя и объект Дружбы. @Entity @Table (имя = "USER") @SuppressWarnings ( "неиспользуемый") общественный класс пользователь {@Id @GeneratedValue @column (имя = "USER_ID") частная Long user_id; @Column (имя = "NAME") частное имя строки; @Column (имя = "SOURNAME") частная строка sourname; @Column (имя = «РОЖДЕНИЕ») частное Струнного дня рождения; @OneToMany (скачивает = FetchType.LAZY, mappedBy = "pk.user1", каскад = CascadeType.ALL) частная Set дружба = новый HashSet (0); @OneToMany (выборка = FetchType.LAZY, mappedBy = " } Общественного недействительными setCreatedDate (Дата createdDate) {this.createdDate = createdDate; } @Transient Public User getUser1 () {вернуть getPk () getUser1 ();.} @Transient Public User getUser2 () {вернуть getPk () getUser2 (). } Общественного недействительными setUser1 (user1 Пользователь) {getPk () setUser1 (user1). } Общественного недействительными setUser2 (user2 Пользователь) {getPk () setUser2 (user2).}} @Embeddable общественного класса FriendshipId реализует Serializable {@ManyToOne частного пользователя user1; @ManyToOne частный user2 Пользователь; getUser1 общественности пользователя () {возвращение user1; } Общественного недействительными setUser1 (user1 Пользователь) {this.user1 = user1; } Польз getUser2 () {возвращение user2; } Общественного недействительными setUser2 (пользователь2 Пользователь) {this.user2 = пользователь2; } Общественного логический равна (Object о) {если (это == о) возвращает истину; если (! о == NULL || GetClass () = o.getClass ()) возвращает ложь; FriendshipId, что = (FriendshipId) о; если (user1 = NULL user1.equals (that.user1): that.user2 = нуль!?!!) вернуться ложным; если (user2 = NULL user2.equals (that.user2): that.user2 = нуль!?!!) вернуться ложным; возвращает истину; } Общественных INT хэш-код) {INT результат (а; Результат = (user1 = нуль user1.hashCode (!):? 0); Результат = 31 * Результат + (user2 = нуль user2.hashCode (!):? 0); возвращать результат; }} И у меня есть этот StackTrace: Вызванный: org.hibernate.MappingException: Повторный столбец отображения для объекта: model.Friendship колонка: user_id (должно быть сопоставлены со вставкой = «ложным» обновлением = «ложь») в org.hibernate , mapping.PersistentClass.checkColumnDuplication (PersistentClass.java:696) при org.hibernate.mapping.PersistentClass.checkColumnDuplication (PersistentClass.java:737) в org.hibernate.mapping.PersistentClass.validate (PersistentClass.java:493) в org.hibernate .mapping.RootClass.validate (RootClass.java:270) в org.hibernate.cfg.Configuration.validate (Configuration.java:1324) в org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:1782) помочь мне! UPD: @Entity @table (Name = "ДРУЖБА") @AssociationOverrides ({@AssociationOverride (имя = "pk.user1", joinColumns = @JoinColumn (название = "user_id_1")), @AssociationOverride (имя = «pk.user2 », joinColumns = @JoinColumn (Name = "user_id_2"))}) @SuppressWarnings ( "неиспользуемый"
Андрей Б
1

голосов
2

ответ
101

Просмотры

Hibernate дубликаты элементов в родительской коллекции в то время как он заселение с недавно сохранялась Чайлдс

Может кто-нибудь объяснить следующее странное поведение я столкнулся? Я пытаюсь сохраняться несколько новых дочерних объектов и одновременно добавить их к родительскому коллекции. В конце есть в два раза больше элементов в родительской коллекции, как я ожидал. Позвольте мне показать пример: @Entity общественного класса А {@GeneratedValue (стратегия = GenerationType.IDENTITY) @Id частный целочисленный идентификатор; @OneToMany (mappedBy = "а") частный список бс = новый ArrayList (); общественное целое GetId () {возвращение идентификатор; } Общественного недействительными SETID (целочисленный идентификатор) {this.id = ID; } GetBs Публичного списка () {вернуться закладными; } Общественного недействительными setBs (Список шс) {this.bs = шс; }} @Entity общественного класса B {@GeneratedValue (стратегия = GenerationType.IDENTITY) @Id частный целочисленный идентификатор; @ManyToOne частный Аа; общественное целое GetId () {возвращение идентификатор; } Общественного недействительными SETID (целочисленный идентификатор) {this.id = ID; } Общественного Гета () {возвращают; } Общественного недействительными множество А (А а) {this.a = а; }} Тестовый пример: @Test тест общественного недействительными () бросает исключение {entityManager.getTransaction () начинается ();. А а = новый А (); entityManager.persist (а); entityManager.flush (); entityManager.clear (); а = entityManager.find (класс A.class, a.getId ()); для (INT I = 0; I <3; я ++) {B B = новый B (); b.setA (а); entityManager.persist (б); a.getBs () добавляют (б). } assertEquals (3, a.getBs () размер ().); entityManager.getTransaction () фиксации (). } Результат: java.lang.AssertionError: Ожидаемый: 3 Фактический: 6 Я не прошу, как изменить данный код для достижения ожидаемого результата. Я хочу понять, почему данный код ведет себя, как это. Обновить: Прекрасно работает с EclipseLink и DataNucleus, но терпит неудачу с Hibernate. Благодаря @riskop ответ и мое дальнейшее расследование, мы можем подвести итог: EclipseLink 2.5.0 - Он работает, как ожидалось. DataNucleus 4.1.9 - Он работает, как ожидалось. Hibernate 5.1.0.Final, 5.0.3.Final 4.3.11.Final, 4.2.21.Final, ... - Это просто не работает.
Lukas Risko
1

голосов
1

ответ
929

Просмотры

один ко многим - обновление sequelize - не вставка / удаление детей

Так что я боролся в течение нескольких часов в настоящее время с обновлением в один-ко-многим. У меня есть проект, который имеет определенные задачи (например). Я добавлять и удалять задачи через внешний интерфейс и отправить пересмотренный объект по бэкэнду работаю с sequelize. Тогда я попытался обновить записи следующим образом: возвращение models.Project .findOne ({где: {ID: projectToUpdate.id}, включают в себя: [models.Task]}) .then (функция (ProjectFromDb) {возвращение models.sequelize. транзакции ({IsolationLevel: models.sequelize.Transaction.ISOLATION_LEVELS.READ_COMMITTED}, функция (т) {вернуть ProjectFromDb .update (projectToUpdate, {включают в себя: [{модель: models.Task}]})});
Tikkes

Просмотр дополнительных вопросов