我有一堂课和两张桌子。 1.物品。 第一个表用于存储项目并向用户显示项目,用户从该表中选择项目。(我想从文件中读取项目)。
2.oredered_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()
我该怎么办?
我只想将表项目用于从文件插入并向用户显示项目,并且当他选择所需内容时,它将项目存储在第二个表中。
我可以告诉hibernate:“此方法将映射到此表,并且此方法将映射到此表”吗?
也许要创建2个类?
答案 0 :(得分:1)
选中此链接可将2个表映射到一个类 How to map one class with multiple tables in Hibernate/javax.persistance?
ps:您还可以只创建一个带有两个外键的映射表,以避免有关项的多余信息,并在您的类用户中添加一对多联接(一个用户可以与许多项相关),但是您的方式更像是“ DDD风格”