2013-03-16 2 views
0

Ранее я работал с SQLAlchemy, и по своему опыту я мог выполнять декларативное сопоставление от классов к таблицам в SQLAlchemy, а также отношения между классами.Соотношение между сопоставлением между классами таблицы Hibernate

Вот пример декларации:

class Item(Base): 
    __tablename__ = 'item' 

    id = Column(Integer, Sequence('item_seq'), primary_key=True) 
    barcode = Column(String, unique=True) 
    shortdesc = Column(String) 
    desc = Column(String) 
    reg_date = Column(DateTime) 
    registrar = Column(String) 
    category = Column(String, ForeignKey('category.code')) 
    supplier = Column(String, ForeignKey('supplier.code')) 
    stock_on_hand = Column(Integer) 
    cost = Column(Float) 
    price = Column(Float) 
    unit = Column(String, ForeignKey('unit.code')) 

    receiving = relationship('Receiving', backref='item') 
    adjustment = relationship('Adjustment', backref='item') 
    sales = relationship('Sales', backref='sales') 

    def __repr__(self): 
     return "<Item('%s','%s','%s', '%s')>" % (self.barcode, self.shortdesc, self.stock_on_hand, self.unit) 

class Supplier(Base): 

    __tablename__ = 'supplier' 

    code = Column(String, primary_key=True) 
    name = Column(String) 
    reg_date = Column(DateTime) 
    registrar = Column(String) 
    address_line_1 = Column(String) 
    address_line_2 = Column(String) 
    address_line_3 = Column(String) 
    postcode = Column(String) 
    city = Column(String) 
    state = Column(String) 
    country = Column(String) 
    phone = Column(String) 
    fax = Column(String) 
    representative = Column(String) 

    item = relationship('Item',backref='supplier') 

    def __repr__(self): 
    return "<Supplier('%s','%s','%s')>" % (self.code, self.name, self.representative) 

Если Supplier имеет один-ко-многим с Item и столом, а также отношения могут быть созданы из этих классов декларации.

Могу ли я сделать то же самое с Hibernate? Как? Я googled высокий и низкий, но я только нашел обратную инженерию из таблицы в класс в Hibernate.

Если это возможно, как мы обрабатываем отношения в Hibernate?

ответ

0

Не 100% уверен, что я понимаю вашу проблему правильно, но здесь идет:

на него простым, он может выглядеть следующим образом:

public class Supplier { 
    @Identity 
    @GeneratedValue 
    private Long id; 
    //stuff 
    @OneToMany(mappedBy="supplier") 
    private List<Item> items; 
    //more stuff 
} 

public class Item { 
    @Identity 
    @GeneratedValue 
    private Long id; 
    //item stuff 
    @ManyToOne 
    private Supplier supplier; 
    //more item stuff 
} 

, который гласит, что поставщик имеет ряд элементов , а у товара есть поставщик. Свойство mappedBy утверждает, что в базе данных, Item -стол будут иметь столбец supplier_id, что внешний ключ к Supplier -столам

+0

Просто для уточнения вещи, мы могли бы использовать это объявление класса для создания таблиц в спящем режиме, я Я прав? –

+0

Вы можете использовать инструмент hbm2ddl для генерации определений таблиц на основе аннотированных классов (или спящих отображений). – Tobb

+0

Dang, я думал, что это будет так же просто, как SQLAlchemy :( –

Смежные вопросы