首页 > 解决方案 > 如何告诉休眠将调用哪个方法?我有一节课,两张桌子

问题描述

我有一节课和两张桌子。1. 物品。第一个表用于存储和向用户显示项目,用户从该表中选择项目。(我想从文件中读取项目)。

2.ordered_items :这里我想保存用户选择的项目。

这些表具有相同的列和数据类型。

public class Item {

    private Integer id;
    private String name;
    private Integer price;
}

XML 映射:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="entities.Item" table="______________">

    <id name= "id" column="item_id" type="integer">

    </id>
    <property name="name" column="item_name" type="string"/>
    <property name="price" column="item_price" type="integer"/>

</class>
</hibernate-mapping>

此方法用于从文件中读取并插入到数据库中。

public void insertItems()
    {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tr = session.beginTransaction();
        Item currentItem;
        String str;
        String dataString[];
        try {
            File fileForReading = new File(PATH_FILE);
            FileReader fr = new FileReader(fileForReading);
            BufferedReader br = new BufferedReader(fr);
            while((str = br.readLine()) != null)
            {
                dataString = str.split(" ");
                Integer id = Integer.parseInt(dataString[INDEX_ID]);
                String name = dataString[INDEX_NAME];
                Integer price = Integer.parseInt(dataString[INDEX_PRICE]);
                currentItem = new Item(id,name,price);
                session.persist(currentItem);

            }
            tr.commit();
            session.close();

此方法从表 Items 中读取并显示给用户。

public void displayItems()

我该怎么做?

我只想将表格项目用于从文件中插入并向用户显示项目,当他选择他想要的内容时,它将将该项目存储在第二个表中。

我可以告诉休眠:“这个方法将映射到这个表,这个方法将映射到这个表”?

也许创建2个类?

标签: javamysqlhibernate

解决方案


检查此链接以将 2 个表映射到一个类 如何在 Hibernate/javax.persistance 中将一个类与多个表映射?

ps:您也可以只创建一个带有两个外键的映射表以避免有关项目的冗余信息,并在您的班级用户中添加一对多联接(一个用户可以与许多项目相关),但您的方式更多“DDD风格”


推荐阅读