今天看到了实体BEAN,(Entity Bean),在做对象和数据库表映射时候,发现一个问题,那就是我为一个字段指定了列名后,它仍然会生成一个和字段名一样的列,比如;
实体BEAN代码
-
-
-
-
-
-
-
-
-
- package lbf.demo.bean;
-
-
-
-
-
- import java.util.*;
- import javax.persistence.*;
- @Entity
- @Table(name="person")
- public class Person {
- private int id,age;
- private String name,sex;
- private Date birthday;
-
- public Person() {
- }
- @Id
- @GeneratedValue
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
- @Column(name="myAge",nullable=false,length=4)
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
- @Column(name="PersonName",nullable=false,length=32)
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
- @Column(name="mySex",nullable=false)
- public String getSex() {
- return sex;
- }
-
- public void setSex(String sex) {
- this.sex = sex;
- }
- @Column(name="myBirty",nullable=false)
- public Date getBirthday() {
- return birthday;
- }
-
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
-
- }
我在这里,除了主键ID没有指定列名外,其它四个属性我都有指定列名,当然这个列名和属性本不一样,可是当我布署了此EJB后,发现数据库里面我生成的表却多了几列和类属性同名的列.真是太奇怪了,它既生成我指定的列名为什么又要生成属性相同的列名呢,如果我不指定任何列名,那么数据库就会生成和我属性名一样的列.
上述生成的重复列,只是有三个会重复而已,而PersonName却只有一个,也就是说不会出现name列,但是为什么其它三个会生成age,birthday,sex这三列呢.此时它依然帮我生成了myAge,myBirth,mySex,并且这三列还可以为空,我不是指定了不可以为空的吗,可是age,birthday,sex,这三列却不可以为空,就好像我指定的属性是为它们指定的一样.
记下此问题,留给以后解决
刚才又改了一个程序,发现这样写可以让数据库生成我想生成的形式
新的代码 代码
-
-
-
-
-
-
-
-
-
- package lbf.demo.bean;
-
-
-
-
-
- import java.util.*;
- import javax.persistence.*;
- @Entity
- @Table(name="person")
- public class Person {
- private int id,age;
- private String name,sex;
- private Date birthday;
-
- public Person() {
- }
- @Id
- @GeneratedValue
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
- @Column(name="myAge",nullable=false,length=4)
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
- @Column(name="PersonName",nullable=false,length=32)
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
- @Column(name="mySex",nullable=false,length=32)
- public String getSex() {
- return sex;
- }
-
- public void setSex(String sex) {
- this.sex = sex;
- }
- @Column(name="myBirty",nullable=false,length=8)
- public Date getBirthday() {
- return birthday;
- }
-
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
-
- }
在这段代码里,我每次声明一样新的列名的时候都指定了是否可以非空,长度为多少,这我们在新建表的时候也必须指出的东西,所以我觉得以前的代码之所以会出错(其实不能叫出错,叫出乎意料)是因为我只是指定了列名,而没有指定其长度或者约束,也就是说我的定义不完全,所以系统不知道我想建什么样的列,于是就帮我建了两列,一列是我命名的,一例是以属性名命名的,呵呵,现在只能这么理解了.因为才刚刚接触到皮毛而已
分享到:
相关推荐
J2EE学习笔记(J2ee初学者必备手册) J2EE学习笔记(J2ee初学者必备手册)
J2EE学习笔记(J2ee初学者必备手册)
J2EE初学者ppt课件 我们上课用的 觉得有用的话就下咯
J2EE初学者要理解的几个问题
J2EE初学者需要注意的问题,很实用,对全面了解J2EE有很大的作用
J2EE初学者需要理解的问题
BBS系统(J2EE初学教程源码)期中包括登录和注册页面极其处理(servlet),还有数据库的连接,使用的是mysql数据库。在运行的时候记得稍微修改一下用户名和密码和数据库名哦。
jap基础教程,适合j2ee初学者,够强够强大1
本资源是J2EE的课件 J2EE初学者必看的基础知识电子资料
Java教程 J2EE初学者需要理解的五个问题
J2EE初学者需要注意的问题《推荐》
J2EE的电子书开发文档,内容翔实,适合初学者阅读.
* simplejee 是很多例子的大杂烩,用来演示j2ee开发的常用技术。 * 包括jsp,servlet,html,javascript,css等,以及springmvc+jdbcTemplate和 struts2+hibernate+spring, struts2+ibatis+spring 实现的登陆,...
学习交流 共同研究 分析解决疑难问题 学习交流 共同研究 分析解决疑难问题