org.hibernate.MappingException: Unknown entity: java.lang.String

lv0031 2010-04-13 11:18:29
急、急、急...

增、查、改都没问题,就是删除报错:org.hibernate.MappingException: Unknown entity: java.lang.String,请高手赐教...

User.hbm.xml文件如下:

<hibernate-mapping>
<class name="com.tables.User" table="user" >
<id name="studentId" type="java.lang.String"> //主键studentId
<column name="studentId" length="12" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="name" />
</property>
<property name="password" type="java.lang.String">
<column name="password" not-null="true" />
</property>
</class>
</hibernate-mapping>

JAVA类删除方法

public void delete(String studentId) {
Session session=HibernateUtil.getSession();
session.beginTransaction();
session.delete(studentId);
session.getTransaction().commit();
HibernateUtil.closeSession(session);
}

表的映射类User.java

public class User {
private String studentId,name,password;

public String getStudentId() {
return studentId;
}

public void setStudentId(String studentId) {
this.studentId = studentId;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

...全文
643 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lv0031 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 icewee 的回复:]
楼主这代码写的有问题啊!你这工具类删除BEAN起码要把类的CLASS传递过去啊,让Hibernate知道你删除的是哪个类,映射到数据库知道是哪个表,如果两张表都是ID为1的记录,它怎么可能不出错呢!我很想看看你的DELETE方法咋写的。
[/Quote]

谢谢大哥,问题解决了! 我这样理解你的话的,不知道是不是符合你本来的意愿...
要删除表中的某个记录,应该指定其ID...
代码如下:

public void delete(String studentId) {
Session session=HibernateUtil.getSession();
session.beginTransaction();

//session.delete(studentId);删除记录指定不明确,问题代码...
String hql = "DELETE User WHERE studentId=?";
Query q = session.createQuery(hql);
q.setString(0, studentId);
q.executeUpdate();

session.getTransaction().commit();
HibernateUtil.closeSession(session);
}
长公子冰 2010-04-13
  • 打赏
  • 举报
回复
楼主这代码写的有问题啊!你这工具类删除BEAN起码要把类的CLASS传递过去啊,让Hibernate知道你删除的是哪个类,映射到数据库知道是哪个表,如果两张表都是ID为1的记录,它怎么可能不出错呢!我很想看看你的DELETE方法咋写的。
lv0031 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 icewee 的回复:]
楼主这代码写的有问题啊!你这工具类删除BEAN起码要把类的CLASS传递过去啊,让Hibernate知道你删除的是哪个类,映射到数据库知道是哪个表,如果两张表都是ID为1的记录,它怎么可能不出错呢!我很想看看你的DELETE方法咋写的。
[/Quote]
你说的话能不能再详细点,我怎么听的有点不明白: 工具类删除BEAN起码要把类的CLASS传递过去
DELETE方法:

public void deleteUser(String studentId) {
IUser iUser=DaoFactory.getDaoInstance();
if(iUser.queryByID(studentId)!=null){
iUser.delete(studentId);
}
else {
System.out.println("学号ID不存在");
}
}
somnusma 2010-04-13
  • 打赏
  • 举报
回复
hibernate-mapping>
<class name="com.tables.User" table="user" >
<id name="studentId" type="string"> //主键studentId
<column name="studentId" length="12" />
<generator class="assigned" />
</id>
<property name="name" type="string">
<column name="name" />
</property>
<property name="password" type="string">
<column name="password" not-null="true" />
</property>
</class>
</hibernate-mapping>


换成这样子这里面type应该是写给Hibernate看的

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧