SSH框架之Hibernate数据库外键如何插入值的问题

SSH框架之Hibernate数据库外键如何插入值的问题

一、目标:

现有表:

其中Tea_id属于外键,如何向含有外键的表中插入对应的数据。

二、pojos部分

Course_information
.java

package com.pojos;

import java.util.Date;

public class Course_information {

private Integer Course_id;

private String Course_name;

private Integer Course_level;

private String Course_sign_begin;

private String Course_sign_end;

private Date Course_add_time;

private Integer Course_option_numer;

private String Course_message;

/*关联教师*/

private Teacher_information teacher_information;

public Course_information() {

super();

}

/*构造函数*/

public Course_information(Integer Course_id,String Course_name,Teacher_information teacher_information,

Integer Course_level,String Course_sign_begin,String Course_sign_end,Date Course_add_time,

String Course_message){

this.Course_id = Course_id;

this.Course_name = Course_name;

this.teacher_information = teacher_information;

this.Course_level = Course_level;

this.Course_sign_begin = Course_sign_begin;

this.Course_sign_end = Course_sign_end;

this.Course_add_time = Course_add_time;

this.Course_message = Course_message;

}

public Integer getCourse_id() {

return Course_id;

}

public void setCourse_id(Integer courseId) {

Course_id = courseId;

}

public String getCourse_name() {

return Course_name;

}

public void setCourse_name(String courseName) {

Course_name = courseName;

}

public Integer getCourse_level() {

return Course_level;

}

public void setCourse_level(Integer courseLevel) {

Course_level = courseLevel;

}

public String getCourse_sign_begin() {

return Course_sign_begin;

}

public void setCourse_sign_begin(String courseSignBegin) {

Course_sign_begin = courseSignBegin;

}

public String getCourse_sign_end() {

return Course_sign_end;

}

public void setCourse_sign_end(String courseSignEnd) {

Course_sign_end = courseSignEnd;

}

public Date getCourse_add_time() {

return Course_add_time;

}

public void setCourse_add_time(Date courseAddTime) {

Course_add_time = courseAddTime;

}

public Integer getCourse_option_numer() {

return Course_option_numer;

}

public void setCourse_option_numer(Integer courseOptionNumer) {

Course_option_numer = courseOptionNumer;

}

public String getCourse_message() {

return Course_message;

}

public void setCourse_message(String courseMessage) {

Course_message = courseMessage;

}

public Teacher_information getTeacher_information() {

return teacher_information;

}

public void setTeacher_information(Teacher_information teacherInformation) {

teacher_information = teacherInformation;

}

}

Course_information.hbm.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 package="com.pojos">

<class name="Course_information" table="course_information">

<!-- 课程编号 -->

<id name="Course_id" type="java.lang.Integer">

<column name="Course_id"/>

<generator class="native"/>

</id>

<!-- 课程名称 -->

<property column="Course_name" generated="never" lazy="false"

name="Course_name" type="java.lang.String" length="40" not-null="true"/>

<!-- 任课教师ID -->

<many-to-one name="teacher_information" column="Tea_id" class="Teacher_information"></many-to-one>

<!-- 课程性质 -->

<property column="Course_level" generated="never" lazy="false" not-null="true"

name="Course_level" type="java.lang.Integer"/>

<!-- 签到时间上限 -->

<property column="Course_sign_begin" generated="never" lazy="false" not-null="false"

name="Course_sign_begin" type="java.lang.String" length="20"/>

<!-- 签到时间下限 -->

<property column="Course_sign_end" generated="never" lazy="false" not-null="false"

name="Course_sign_end" type="java.lang.String" length="20"/>

<!-- 课程添加时间 -->

<property column="Course_add_time" generated="never" lazy="false" not-null="false"

name="Course_add_time" type="java.util.Date"/>

<!-- 课程选择总人数 -->

<property column="Course_option_numer" generated="never" lazy="false" not-null="false"

name="Course_option_numer" type="java.lang.Integer"/>

<!-- 课程描述 -->

<property column="Course_message" generated="never" lazy="false"

name="Course_message" type="java.lang.String"/>

</class>

</hibernate-mapping>

三、action业务逻辑层部分

CourseManagerAction
.java

package com.teacher.web.action;

import java.util.Date;

import com.pojos.Course_information;

import com.pojos.Teacher_information;

import com.teacher.comm.BaseAction;

import com.teacher.service.CourseService;

import com.teacher.service.Teacher_informationService;

@SuppressWarnings("serial")

public class CourseManagerAction extends BaseAction{

/*定义所有属性*/

private Integer Course_id;

private String Course_name;

private Integer Course_level;

private String Course_sign_begin;

private String Course_sign_end;

private Date Course_add_time;

private Integer Course_option_numer;

private String Course_message;

/*定义教师表对象  记录当前教师的工号和教师编号*/

private Integer Tea_id;

private String Tea_number;

private Course_information course_information;

/*定义服务层  接口类对象*/

private Teacher_informationService teacher_informationService;

private CourseService courseService;

/*进入添加课程页面*/

public String add_course(){

System.out.println("当前的教师工号:"+Tea_number);

return "add_course";

}

public String save_new_course(){

try{

Course_information course = new Course_information();

course.setCourse_name(Course_name);

System.out.println("当前的教师工号:"+Tea_number);

Teacher_information tea = teacher_informationService.findBy_Tea_number(Tea_number);

System.out.println("获取到的当前教师编号为:"+tea.getTea_id());

course.setTeacher_information(tea);

course.setCourse_level(Course_level);

course.setCourse_sign_begin(Course_sign_begin);

course.setCourse_sign_end(Course_sign_end);

course.setCourse_add_time(new Date());

course.setCourse_message(Course_message);

courseService.saveOneCourse(course);

}catch(Exception e){

System.out.println(e.toString());

}

return "add_course_ok";

}

public Integer getCourse_id() {

return Course_id;

}

public void setCourse_id(Integer courseId) {

Course_id = courseId;

}

public String getCourse_name() {

return Course_name;

}

public void setCourse_name(String courseName) {

Course_name = courseName;

}

public Integer getCourse_level() {

return Course_level;

}

public void setCourse_level(Integer courseLevel) {

Course_level = courseLevel;

}

public Date getCourse_add_time() {

return Course_add_time;

}

public void setCourse_add_time(Date courseAddTime) {

Course_add_time = courseAddTime;

}

public String getCourse_message() {

return Course_message;

}

public void setCourse_message(String courseMessage) {

Course_message = courseMessage;

}

public CourseService getCourseService() {

return courseService;

}

public void setCourseService(CourseService courseService) {

this.courseService = courseService;

}

public Integer getTea_id() {

return Tea_id;

}

public void setTea_id(Integer teaId) {

Tea_id = teaId;

}

public String getTea_number() {

return Tea_number;

}

public void setTea_number(String teaNumber) {

Tea_number = teaNumber;

}

public Teacher_informationService getTeacher_informationService() {

return teacher_informationService;

}

public void setTeacher_informationService(

Teacher_informationService teacherInformationService) {

teacher_informationService = teacherInformationService;

}

public String getCourse_sign_begin() {

return Course_sign_begin;

}

public void setCourse_sign_begin(String courseSignBegin) {

Course_sign_begin = courseSignBegin;

}

public String getCourse_sign_end() {

return Course_sign_end;

}

public void setCourse_sign_end(String courseSignEnd) {

Course_sign_end = courseSignEnd;

}

public Integer getCourse_option_numer() {

return Course_option_numer;

}

public void setCourse_option_numer(Integer courseOptionNumer) {

Course_option_numer = courseOptionNumer;

}

public Course_information getCourse_information() {

return course_information;

}

public void setCourse_information(Course_information courseInformation) {

course_information = courseInformation;

}

}

四、数据实现层daoHib

CourseDaoHib
.java

package com.teacher.daoHib;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.pojos.Course_information;

import com.teacher.dao.CourseDao;

public class CourseDaoHib extends HibernateDaoSupport implements CourseDao{

/*保存页面添加的课程信息*/

@Override

public void saveOneCourse(Course_information course) {

getHibernateTemplate().save(course);

}

}

五、applicationContext-teacher.xml(部分代码)

特别注意,如果action业务逻辑层需要调用其它层已经写好的方法,需要此配置文件中添加对应的Service层参照,否则方法将不能调用。

<!-- 课程表 -->

<!-- Dao -->

<bean id="courseDao" class="com.teacher.daoHib.CourseDaoHib">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

<!-- Service -->

<bean id="courseService" class="com.teacher.serviceImpl.CourseServiceImpl">

<property name="courseDao" ref="courseDao"></property>

</bean>

<!--教师 Action -->

<bean id="courseManagerAction" class="com.teacher.web.action.CourseManagerAction"

scope="prototype">

<property name="courseService" ref="courseService"></property>

<property name="teacher_informationService" ref="teacher_informationService"></property>

</bean>

六、实现效果

以上,仅供以后SSH开发参考使用。

时间: 2024-10-06 15:21:50

SSH框架之Hibernate数据库外键如何插入值的问题的相关文章

SSH框架中hibernate 出现 user is not mapped 问题

SSH框架中hibernate 出现 user is not mapped 问题 在做SSH框架整合时,在进行DAO操作时.这里就只调用了chekUser()方法.运行时报  user is not mapped 错误 :  chekUser()方法如下:  public boolean chekUser(User user){           String hql="from user u where u.id=? and u.name=?";        Query quer

开源进销存PSI - 数据库外键

今天在PSI的QQ群中聊起了数据库外键的话题,我就写这篇博文,说说我对数据库外键的一些考虑. 1.数据库设计中应该使用外键. 2.很杯具,PSI的数据库设计到目前为止,没有使用外键. 3.PSI会逐步把数据库外键给补上. 4.有些地方还真没法加上外键.举现在的例子: 4.1 t_warehouse_org中的org_id字段,即可以存储 t_org的id,又可以存储t_user的id,这个时候,外键就没法加了. 4.2 t_inventory_detail中的ref_number字段,可以存储多

[转载]数据库外键的使用

[转载]数据库外键的使用 外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据. 使两张表形成关联,外键只能引用外表中的列的值! 例如: a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了外键后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x 建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键). 指定主键关键字: foreign key(列名) 引用外键关键字: references <外键表名>(外键列名) 事件触

第二百八十节,MySQL数据库-外键链表之一对多

MySQL数据库-外键链表之一对多 外键链表之一对多 外键链表:就是a表通过外键连接b表的主键,建立链表关系 一对多:就是b表的某一个字段值对应a表外键里的多个值,前提是a表要与b表链表

未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。

来源:http://www.cnblogs.com/JuneZhang/archive/2013/01/10/2853981.html 今天运行项目,提示“未能启用约束.一行或多行中包含违反非空.唯一或外键约束的值.”的异常信息. 在网上找了查了一些原因:http://www.cnblogs.com/muzihai1988/archive/2011/05/04/2036502.html 原因分析:强类型的DataTable和SQL语句查询出的结果不匹配. 简单说就是强类型的DataTable比S

Hibernate,一对一外键单向 记录。Timestamp 的一个坑。

首先是2张表 表A: 表B: 其中表B中的FormBaseId对应表A中的SubjectID. 数据库中没有设置外键关系. 下面是2个对应的实体 package questionnaire.model; /** * AbstractAdsubject entity provides the base persistence definition of the * Adsubject entity. @author MyEclipse Persistence Tools */ public abs

SSH框架之Hibernate(1)——映射关系

ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作.Hibernate正是实现了这种思想,达到了方便开发人员以面向对象的思想来实现对数据库的操作. Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java).映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.xml),它们各自的作用如下. 映射类(*.java):它是描述数据库表的结构,表中的字段在类中被描述成属

ssh框架中文保存数据库MySQL乱码

检查后台获取前端页面数据打印到console控制台无乱码:tomcat配置没有问题: 检查MySQL数据库编码设置:字符集:utf8 -- UTF-8 Unicode,排序规则:utf8_general_ci无误,数据库可以保存中文. 两方面无误后保存乱码:在ssh框架配置数据库连接参数后追加 "? useUnicode=true&characterEncoding=UTF-8" 如下: jdbc.url=jdbc:mysql://localhost:3306/ssh? use

数据库外键的使用

外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据. 使两张表形成关联,外键只能引用外表中的列的值! 例如: a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了外键后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x 建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键). 指定主键关键字: foreign key(列名) 引用外键关键字: references <外键表名>(外键列名) 事件触发限制: on delet