Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate类到表的映射关系_Java_Hibernate_Sqlalchemy - Fatal编程技术网

Java Hibernate类到表的映射关系

Java Hibernate类到表的映射关系,java,hibernate,sqlalchemy,Java,Hibernate,Sqlalchemy,我以前使用过SQLAlchemy,根据我的经验,我可以在SQLAlchemy中进行从类到表的声明性映射,以及类之间的关系 以下是声明的示例: class Item(Base): __tablename__ = 'item' id = Column(Integer, Sequence('item_seq'), primary_key=True) barcode = Column(String, unique=True) shortdesc = Column

我以前使用过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)
类项目(基本):
__tablename_uu='item'
id=列(整数,序列('item_seq'),主键=True)
条形码=列(字符串,唯一=真)
shortdesc=列(字符串)
desc=列(字符串)
reg_date=列(日期时间)
注册器=列(字符串)
category=列(字符串,ForeignKey('category.code'))
supplier=列(字符串,ForeignKey('supplier.code'))
库存量=列(整数)
成本=列(浮动)
价格=列(浮动)
unit=列(字符串,ForeignKey('unit.code'))
接收=关系('receiving',backref='item')
调整=关系('adjustment',backref='item')
销售=关系('sales',backref='sales')
定义报告(自我):
返回“”%(self.barcode、self.shortdesc、self.stock、self.unit)
类别供应商(基本):
__tablename_uu='供应商'
代码=列(字符串,主键=真)
名称=列(字符串)
reg_date=列(日期时间)
注册器=列(字符串)
地址\行\ 1=列(字符串)
地址\行\ 2=列(字符串)
地址\行\ 3=列(字符串)
邮政编码=列(字符串)
城市=列(字符串)
状态=列(字符串)
国家=列(字符串)
phone=列(字符串)
传真=列(字符串)
代表=列(字符串)
项目=关系('item',backref='supplier')
定义报告(自我):
返回“”%(self.code、self.name、self.representative)
其中,
供应商
项目
和表有一对多关系,并且可以从这些类声明中创建关系

我可以用Hibernate做同样的事情吗?怎么用?我在谷歌上到处搜索,但我只在Hibernate中找到了从表到类的逆向工程


如果可以这样做,我们如何处理Hibernate中的关系?

我不能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
}
公共类供应商{
@身份
@生成值
私人长id;
//东西
@OneToMany(mappedBy=“供应商”)
私人清单项目;
//更多的东西
}
公共类项目{
@身份
@生成值
私人长id;
//物品
@许多酮
私人供应商;
//更多物品
}

说明一个供应商有多个项目,一个项目有一个供应商。mappedBy属性声明在数据库中,
-表将有一列
供应商id
,该列是
供应商
-表

的外键。为了澄清问题,我们可以使用该类声明在hibernate中创建表,我说的对吗?你可以使用一个名为hbm2ddl的工具来根据注释类(或hibernate映射)生成表定义。Dang,我认为它会像SQLAlchemy一样简单:(这并没有那么复杂,如果你使用maven,你所要做的就是在pom.xml中添加一个插件,通过一个简单的命令就可以生成数据库方案。