gpt4 book ai didi

java - 在 hibernate 中制作示例程序

转载 作者:行者123 更新时间:2023-11-29 09:21:03 24 4
gpt4 key购买 nike

我正在按照本教程在 hibernate 中制作示例程序: http://www.myeclipseide.com/documentation/quickstarts/hibernateintroduction/

使用逆向工程,我创建了这个方法。EventsDAO.java:

public Events findById(com.hibernate.EventsId i) {
log.debug("getting Events instance with id: " + i);
try {
Events instance = (Events) getSession().get(
"com.hibernate.Events", i);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}

并从主类调用这个方法:

private static void listEvents()
{
EventsDAO dao= new EventsDAO();
Events events= dao.findById(1);
printEvents("Printing User,", events);
dao.getSession().close();
}

它给我错误:Events events= dao.findById(1);因为在这里,我正在传递 int。在 EventsDAO.java 中,它的类型是 EventsID。

请提出建议。

正如surlac建议的那样,现在它给出了异常(exception):线程“main”中的异常 org.hibernate.id.IdentifierGenerationException:必须在调用 save() 之前手动分配此类的 ID:com.hibernate.Events

private static void addEvents()
{
Events events= new Events();
events.setUid(1);
events.setName("abc");
events.setDuration(123);
EventsDAO dao= new EventsDAO();
Transaction tx=dao.getSession().beginTransaction();
dao.save(events);
tx.commit();
dao.getSession().close();
}

它在这一行给出异常:

dao.save(events);

这是 Events.hbm.xml 文件:<?xml version="1.0" encoding="utf-8"?><br/>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><br/>
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
--><br/>
<hibernate-mapping><br/>
<class name="com.hibernate.Events" table="EVENTS" schema="APP"><br/>
<composite-id name="id" class="com.hibernate.EventsId"><br/>
<key-property name="uid" type="java.lang.Long">
<column name="UID" /><br/>
</key-property><br/>
<key-property name="name" type="java.lang.String">
<column name="NAME" length="20" /><br/>
</key-property><br/>
<key-property name="duration" type="java.lang.Integer">
<column name="DURATION" />
</key-property><br/>
</composite-id><br/>
</class><br/>
</hibernate-mapping>

请帮忙。

最佳答案

尽量使用 Integer 作为 ID,除非你使用复合键:

    public Events findById( java.lang.Integer id) {
log.debug("getting Events instance with id: " + id);
try {
Events instance = (Events) getSession()
.get("com.hibernate.Events", id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}

关于java - 在 hibernate 中制作示例程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com