【发布时间】:2011-10-04 13:39:20
【问题描述】:
我是 Struts 2 w/hibernate 的新用户。 我有 2 个表:“客户”和“Coordonnees”(法语单词) 在我的表“客户端”中,我有一个名为“coordonnees_id”的 FK,它引用表“Coordonnees”中的字段“id” 我创建了一个这样的插入表单:
文件添加.jsp
<s:form method="post" action="create">
<s:textfield cssClass="" label="Nom" name="client.nom" />
<s:textfield cssClass="" label="Prénom" name="client.prenom" />
....
<s:textfield cssClass="" label="Email" name="coordonnees.email" />
<s:textfield cssClass="" label="Adresse" name="coordonnees.adresse" />
<s:submit value="Insert" />
</s:form>
文件 ClientAction.java
private Client client;
private ClientManager clientManager;
private Coordonnees coordonnees;
private CoordonneesManager coordonneesManager;
public String create() {
client = getClient();
coordonnees = getCoordonnees();
try {
clientManager.insert(client);
coordonneesManager.insert(coordonnees);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
文件 CoordonneesManager.java
public boolean insert(Coordonnees coordonnees) {
session = MyHibernateUtil.currentSession();
tx = session.beginTransaction();
try {
session.save(coordonnees);
log.info("Enregistrement de : " + getClass());
return true;
} catch (Exception e) {
log.error(e);
return false;
} finally {
tx.commit();
MyHibernateUtil.closeSession();
}
}
在我的 Client.hbm.xml 文件中:
<many-to-one class="model.Coordonnees" fetch="select" name="coordonnees">
<column name="coordoonnees_id"/>
</many-to-one>
这是我的问题: 当我提交表单时,我想将数据插入表 Client(当然......),表“Coordonnees”(它工作正常),我想获取我刚刚从表 Coordonnees 创建的“id”并将其插入我的表客户端(字段“coordonnees_id”=>我的 FK)。
struts2 中是否有一个简单的选项可以做到这一点?当然,我可以对表 Coordonnees 中的最后一次插入执行选择查询,获取 id 并更新我的表 Client ...但这不是重点,我希望 Struts 为我执行此操作(当然,如果可能的话)。
谢谢大家的帮助:)
【问题讨论】:
-
如果您正确设置了对象和映射,Hibernate 应该注意确保在插入对象图时所有外键都设置正确。
-
嗨 cdeszaq,这是我的问题:请问如何正确映射这些元素?我是该技术的新手:/。这是在我的“Patient.hbm.xml”文件中吗?谢谢你的回答
标签: hibernate struts2 foreign-keys