Многонаправленное отношение много к одному в DataNucleus -- java поле с участием jpa поле с участием jdo поле с участием datanucleus поле с участием many-to-one пол Связанный проблема

Many-to-one unidirectional relation in DataNucleus


0
vote

проблема

русский

Для контекста, сторона клиента я использую шаблон MVP, поэтому вид с One One liste знает только идентификатор, а когда мой новый <код> Many получен Сервер, я хочу просто обновить <код> One 'S, с помощью «SETONEID» или пустой <код> One объект с идентификатором, установленным на требуемое значение ,

Поэтому я пытаюсь создать однонаправленную многонаправленную многонаправленную в DataNucleus, и я немного борюсь. Я в порядке, чтобы использовать JDO или JPA, я не забочусь. В JPA я попробовал это:

 <Код> @Entity public class Many {     @Id     String id;      @ManyToOne     @Join(name = "idOne")     One one; }  @Entity public class One {     @Id     String id; }   

Это почти то, что я хочу. Однозначный создан, но с таблицей присоединения. Я хочу иметь прямое отношение. И когда я вставляю / обновляю <код> Many , я не хочу вставлять / обновить связанный <код> One , просто обновите <код> idOne с хорошим ID в моем <код> Many объекта.

Я нашел это blogpost , но это с гибернатом, и я думаю, что он все еще использует таблицу присоединения:

 <Код> @Entity public class Many {     @Id     public String id;      @Column(name="idOne")     private String idOne;      @ManyToOne     @JoinColumn(name="idOne", nullable=false, insertable=false, updatable=false)     private One one; }   

Я попробовал это, но я получил именно Эта ошибка .

Я не понимаю, как я борюсь с этим. Моя цель - иметь таблицу, которая сохраняет некоторые справочные данные (например, список стран как класс <код> Many0 ), а список «рабочего элемента» (как город как класс <код> Many1 ), что я создаю / обновляю без создания / обновления справочных данных, только его внешний ключ в <код> Many2 объект.

Английский оригинал

For the context, client-side I use the MVP pattern, so the view with the One list knows only the ID, and when my new Many is received on the server, I want to be able to just update the One's foreign key, with a "setOneId" or an empty One object with an ID set to the wanted value.

So I try to create a many-to-one unidirectional in DataNucleus, and I'm struggling a bit. I'm ok to use JDO or JPA, I don't really care. In JPA, I tried this :

@Entity public class Many {     @Id     String id;      @ManyToOne     @Join(name = "idOne")     One one; }  @Entity public class One {     @Id     String id; } 

It's almost what I want. The one-to-many is created but with a join table. I want to have a direct relation. And when I insert/update a Many, I don't want to insert/update the related One, just update the idOne with the good id in my Many object.

I found this blogpost, but it's with Hibernate, and I think it still use a join table :

@Entity public class Many {     @Id     public String id;      @Column(name="idOne")     private String idOne;      @ManyToOne     @JoinColumn(name="idOne", nullable=false, insertable=false, updatable=false)     private One one; } 

I tried it, but I got exactly this error.

I don't understand how I am struggling with that. My goal is to have a table that keep some reference data (like a list of country as the class One), and a list of "working item" (like a town as the class Many) that I create/update without create/update the reference data, just its foreign key in the Many object.

</div
              
         
         

Список ответов

1
 
vote

Если его однонаправленная ассоциация, а <код> Many - это собственная сторона (согласно вашему второму примеру), вы направляетесь в неправильном направлении. Это не имеет большого смысла делегировать обновление и вставлять ответственность на собственную сторону однонаправленных отношений (как сделано с помощью вставки = false и Updatable = false).

Редактировать: Обновленный ответ Так что вы хотите, - это много к одному, с внешним ключевым столбцом на владении. Попробуйте это

 <код> @Entity public class Many {     @Id     String id;      @ManyToOne     @JoinColumn(name = "foreignKeyColumn")     One one; }   
 

If its a unidirectional association, and Many is the owning side (as per your second example), you are heading in the wrong direction. It doesn't make much sense to delegate the update and insert responsibility on the owning side of a unidirectional relationship (as done with the insertable=false and updateable=false).

EDIT: updated answer So what you want is a many-to-one, with a foreign key column on the owning side. Try this

@Entity public class Many {     @Id     String id;      @ManyToOne     @JoinColumn(name = "foreignKeyColumn")     One one; } 
</div
 
 
       
       
1
 
vote
 <код> @Entity public class A {     @Id     String id;      @OneToOne(cascade=CascadeType.ALL)     B b; }  @Entity public class B {     @Id     String id; }   

, а затем, если вы сохранили начальные объекты как

 <код> [INFO] Attaching agents: [C:devmaven_localorgspringframeworkspringloade d1.2.1.RELEASEspringloaded-1.2.1.RELEASE.jar] Listening for transport dt_socket at address: 5005 0  

Это обновляет FK между A и B. Невозможно получить проще в

 
@Entity public class A {     @Id     String id;      @OneToOne(cascade=CascadeType.ALL)     B b; }  @Entity public class B {     @Id     String id; } 

and then if you persisted initial objects as

tx.begin(); A a = new A("FirstA"); B b1 = new B("FirstB"); B b2 = new B("SecondB"); a.setB(b1); em.persist(a); em.persist(b2); tx.commit();  ... (some time later) tx.begin(); A a = em.find(A.class, "FirstA"); B b2 = em.getReference(B.class, "SecondB");  // update the B in A to the second one a.setB(b2); tx.commit(); 

This updates the FK between A and B. Can't get simpler

</div
 
 

Связанный проблема

21  Не мог зарезервировать достаточно места для кучи объекта, чтобы начать JVM  ( Could not reserve enough space for object heap to start jvm ) 
Просто столкнулся со странной проблемой. Когда я набрал <код> java -version Я получил <код> Error occurred during initialization of VM Could not reser...

0  Реализация ARP Smooth  ( Implementing arp sweep ) 
Я играю с libpcap / jpcap. Реализация Sweeper ARP. Я отправляю запрос на все IP в блоке до вещательного адреса и чтения ответов. Теперь я не могу думать о том...

154  Любой способ вызвать частный метод?  ( Any way to invoke a private method ) 
У меня есть класс, который использует XML и отражение для возврата <код> Object s на другой класс. Обычно эти объекты являются подпольными полями внешнего ...

1  Устройство не получают сообщение от GCM  ( Device not receive message from gcm ) 
Я пытаюсь использовать GCM для отправки уведомления с сервера на наше устройство. Все следуют в этом руководстве: http://hmkcode.com/android-google-cloud-m...

1  Файл класса Java содержит комментарии - почему?  ( Java class file contains comments why ) 
Когда я открываю <код> MyClass.class файл в моем редакторе Eclipse, он также показывает мне комментарии кода. Не должен быть оптимизирован .class файла д...

0  Что такое ошибка Java: 93: достигается конца файла во время анализа?  ( What is java error 93 reached end of file while parsing ) 
Это может быть относительно простым вопросом, но почему моя программа получает эту ошибку: Express.java: 93: Ошибка: достигается до конца файла во время анали...

0  Чтение записи студентов из файла  ( Reading student record from file ) 
Я пытаюсь прочитать файл, который имеет запись студентов (имя, фамилия и оценка). Я написал простой код для выполнения этой задачи, но код не удается после пр...

1  Jaxb Marshalling само отношении  ( Jaxb marshalling self relation ) 
Рассмотрим известное отношение сотрудника / менеджера <код> public class Employee { public Employee manager; public List<Employee> employees; } То, чт...

0  LinkedList Рекурсивный метод  ( Linkedlist recursive method ) 
Я пытаюсь написать рекурсивный метод, который печатает связанный список в обратном порядке, но я получаю ошибку Stackoverflow. Метод должен завершиться, когда...

-1  Java создает массив объекта, который 40% длины массива должен быть объектом x другой объект 30% Z и 30% объекта Y [закрыто]  ( Java create an array of object which the 40 of the array length should be objec ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыт . Этот вопрос нуждается в Детали или ясность . В настоящее...

0  Почему этот модульный тест говорит, что мой каталог не существует, когда он делает?  ( Why does this unit test say my directory doesnt exist when it does ) 
Этот код <код> URL listofFiles = this.getClass().getResource("someDir"); File f = new File(listofFiles.toString()); File[] files = f.listFiles(); работа...

2  Наличие JSF выпивать поля поиска HTML. Doable?  ( Having jsf spit out an html search field doable ) 
Я не разработчик Java, но работаю с командой, которая использует JSF 1.2 Мы хотели бы начать использовать теги HTML 5 и атрибуты. Не отображается, что JSF 1...

-3  Я хочу знать, как извлечь данные из файла PDF с помощью Java [Закрыто]  ( I want to know how to extract data from a pdf file using java ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыт . Этот вопрос должен быть больше Фокусированный . В настоя...

-1  Невозможно получить доступ к файлу из сетевого диска  ( Unable to access file from network drive ) 
Я создаю отображение виртуального каталога в Weblogic, передавая местоположение сети и, похоже, не работает. <Код> <wls:virtual-directory-mapping> <wls:...

1  Проблема с использованием TextureView с NDK  ( Issue using textureview with ndk ) 
Я работаю над небольшим кусочком кода, используя текстуру, чтобы отобразить результат среды MediaPlayer. Я сталкиваюсь с проблемой, пытающимся смешивать упр...

Связанный проблема

21  Не мог зарезервировать достаточно места для кучи объекта, чтобы начать JVM 
0  Реализация ARP Smooth 
154  Любой способ вызвать частный метод? 
1  Устройство не получают сообщение от GCM 
1  Файл класса Java содержит комментарии - почему? 
0  Что такое ошибка Java: 93: достигается конца файла во время анализа? 
0  Чтение записи студентов из файла 
1  Jaxb Marshalling само отношении 
0  LinkedList Рекурсивный метод 
-1  Java создает массив объекта, который 40% длины массива должен быть объектом x другой объект 30% Z и 30% объекта Y [закрыто] 
0  Почему этот модульный тест говорит, что мой каталог не существует, когда он делает? 
2  Наличие JSF выпивать поля поиска HTML. Doable? 
-3  Я хочу знать, как извлечь данные из файла PDF с помощью Java [Закрыто] 
-1  Невозможно получить доступ к файлу из сетевого диска 
1  Проблема с использованием TextureView с NDK