有两个表user表和school表
实体类School:package com.tyut.domain;
public class School {
private Integer schoolId;
private String schoolName;
         get set.....
}
实体类User:package com.tyut.domain;public class User {
private Integer userId;
private String userName;
private School school;//外键关联
         get set...
}School.hbm.xml:<hibernate-mapping package="com.tyut.domain">
<class name="School" table="school">
<id name="schoolId" column="school_id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="schoolName" column="school_name" type="java.lang.String"/>
</class>
</hibernate-mapping>User.hbm.xml:<hibernate-mapping package="com.tyut.domain">
<class name="User" table="user">
<id name="userId" column="user_id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="userName" column="user_name" type="java.lang.String"/>
<many-to-one name="school" class="com.tyut.domain.School" column="school_id" lazy="false"></many-to-one>
</class>
</hibernate-mapping>现在想向user表中插入记录,有两个情况:
一、知道schoolId,就根据schoolId找到school赋给user进行插入
二、schoolId为null 该怎么向user表中插入记录
我写的部分代码:
Action里的public String add(){
SchoolService schoolService = new SchoolService();
School school = schoolService.queryById(user.getSchool().getSchoolId());//根据schoolId找到school对象
user.setSchool(school);
UserService userService = new UserService();
userService.add(user);
return "login";
}dao层:public void add(User user) {
Session session = null;
try {
session = HibernateSessionFactory.getSession();
session.beginTransaction();
if(user!=null){
session.save(user);

}
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateSessionFactory.closeSession();
}
}运行后出错:
Hibernate: select school0_.school_id as school1_1_0_, school0_.school_name as school2_1_0_ from school school0_ where school0_.school_id=?
Hibernate: insert into user (user_name, school_id) values (?, ?) select scope_identity()
org.hibernate.exception.GenericJDBCException: could not insert: [com.tyut.domain.User]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
         ......
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在关键字 'user' 附近有语法错误。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
         ......
望高人解决
现在想向user表中插入记录,有两个情况:
一、知道schoolId,就根据schoolId找到school赋给user进行插入
二、schoolId为null 该怎么向user表中插入记录