Как установить отношения один-ко-многим в БД Динамо?

Реализация JAXB (JSR-222) позаботится обо всем для вас. JAXB считает, что каждый класс соответствует сложному типу. У него есть алгоритм для определения имени типа, но вы можете переопределить его, используя аннотацию @XmlType. Когда элемент неармаллирован, если он содержит атрибут xsi:type, тогда JAXB будет смотреть, есть ли класс, связанный с этим типом. Если это будет, он будет создавать экземпляр класса этого типа, если он не будет создавать экземпляр типа, соответствующего этому элементу, на основе метаданных сопоставления, предоставленных через аннотации.

Для получения дополнительной информации


UPDATE

Ниже приведен пример, который может помочь:

schema.xsd

В схеме XML ниже сложный тип canadianAddress расширяет complexType address.




    
        
            
                
            
        
    

    
        
            
        
    

    
        
            
                
                    
                
            
        
    


Демо

В демонстрационном коде ниже XML будет преобразован в модель JAXB, сгенерированную из приведенной выше схемы XML, а затем преобразован обратно в XML.

import java.io.File;
import javax.xml.bind.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance("org.example.customer");

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        File xml = new File("src/org/example/customer/input.xml");
        Customer customer = (Customer) unmarshaller.unmarshal(xml);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(customer, System.out);
    }

}

input.xml / Output

Ниже приведен XML. Элемент address имеет квалификацию xsi:type, чтобы указать, что он содержит экземпляр canadianAddress вместо только address.



    
1 A Street Ontario

0
задан Muruga Balu 17 January 2019 в 06:26
поделиться

1 ответ

DynamoDB НЕ является реляционной БД, поэтому вы не можете иметь отношения как таковые. Тем не менее, у вас есть два способа (по крайней мере, те, которые приходят мне в голову), чтобы достичь того, что вы хотите.

1) Имеют две таблицы: User и Order, последняя с полем userId. Когда вы загрузите Order, получите userId и загрузите также User по индексу id.

2) В вашем User.java вы можете иметь поле List<Order> orders. Затем вам нужно создать Order.java и аннотировать этот класс с помощью @DynamoDBDocument. Это позволяет вам иметь пользовательские объекты в ваших классах @DynamoDBTable. Не забывайте также о геттерах и сеттерах, так как они необходимы.

0
ответ дан Pijotrek 17 January 2019 в 06:26
поделиться
Другие вопросы по тегам:

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