0

私は以前に SQLAlchemy を使用したことがあり、私の経験から、クラス間の関係だけでなく、SQLAlchemy でクラスからテーブルへの宣言的なマッピングを行うことができました。

宣言の例を次に示します。

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テーブルと 1対多のItem関係がある場合、これらのクラス宣言から関係を作成できます。

Hibernate でも同じことができますか? どのように?高低をグーグル検索しましたが、Hibernate のテーブルからクラスへのリバース エンジニアリングしか見つかりませんでした。

このようなことが可能である場合、Hibernate で関係をどのように処理すればよいでしょうか?

4

1 に答える 1

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
}

これは、サプライヤに多数のアイテムがあり、アイテムにサプライヤがあることを示しています。マップされたByプロパティは、データベース内で-tableにItem列があり、-tablesupplier_idへの外部キーであると述べています。Supplier

于 2013-03-16T12:30:12.600 に答える