@Entity
@Table(name="studentloveview")
public class StudentLoveView implements Serializable { /**
*
*/
private static final long serialVersionUID = 1L; @Id
@Column(name="id")
private Integer id;
@Column(name="sname")
private String sname;
@Column(name="sex")
private String sex;
@Temporal(TemporalType.DATE)
@Column(name="date")
private Date date;
@Column(name="lname")
private String lname; public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} public String getSname() {
return this.sname;
} public void setSname(String sname) {
this.sname = sname;
} public String getSex() {
return this.sex;
} public void setSex(String sex) {
this.sex = sex;
} public Date getDate() {
return this.date;
} public void setDate(Date date) {
this.date = date;
} public String getLname() {
return this.lname;
} public void setLname(String lname) {
this.lname = lname;
}
}以上po对应了一个简单的学生爱好的视图,字段分别为
id:学生id
sname:学生姓名
sex:性别
date:日期
lname:爱好在视图中,学生id是重复出现的,因为一个学生有多个爱好。
因为视图没有主键,所以如果映射了@id的话查询结果List中,结果条数是正确的,但是所有id相同的po都会变成数据库中该id第一次出现时的数据。
比如一个学生有3个爱好,视图中应该对应3条数据,查询结果List中应该有3个po,其中lname值不同。但是实际情况是List大小为3没有问题,但是3个po的数据完全相同,值为该学生在视图中的第一条数据。如果去掉@id的映射,又会报No identifier specified for entity: com.pojo.StudentLoveView。这个问题已经困扰我一天了,请高手指教,在线等!!!
@Table(name="studentloveview")
public class StudentLoveView implements Serializable { /**
*
*/
private static final long serialVersionUID = 1L; @Id
@Column(name="id")
private Integer id;
@Column(name="sname")
private String sname;
@Column(name="sex")
private String sex;
@Temporal(TemporalType.DATE)
@Column(name="date")
private Date date;
@Column(name="lname")
private String lname; public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} public String getSname() {
return this.sname;
} public void setSname(String sname) {
this.sname = sname;
} public String getSex() {
return this.sex;
} public void setSex(String sex) {
this.sex = sex;
} public Date getDate() {
return this.date;
} public void setDate(Date date) {
this.date = date;
} public String getLname() {
return this.lname;
} public void setLname(String lname) {
this.lname = lname;
}
}以上po对应了一个简单的学生爱好的视图,字段分别为
id:学生id
sname:学生姓名
sex:性别
date:日期
lname:爱好在视图中,学生id是重复出现的,因为一个学生有多个爱好。
因为视图没有主键,所以如果映射了@id的话查询结果List中,结果条数是正确的,但是所有id相同的po都会变成数据库中该id第一次出现时的数据。
比如一个学生有3个爱好,视图中应该对应3条数据,查询结果List中应该有3个po,其中lname值不同。但是实际情况是List大小为3没有问题,但是3个po的数据完全相同,值为该学生在视图中的第一条数据。如果去掉@id的映射,又会报No identifier specified for entity: com.pojo.StudentLoveView。这个问题已经困扰我一天了,请高手指教,在线等!!!
解决方案 »
- struts hibernate and spring
- servlet配log4j错在哪?
- 为什么我的Servlet输出的图片总是小红叉 ??????
- 现在WEB上出现的那种弹出框是用什么做的?
- Struts标签库html:button怎么添加图像??
- 谁有支持jdbc2.0的sqlserver jdbc驱动
- 请教如何学好j2ee的三个问题?
- 急问:在jsp中发邮件时,smtp的的设置问题?
- java.lang.NumberFormatException急!!!(马上给分)
- 二级联动菜单怎么搞啊??各位大虾救急啊!!!
- 关于hibernate tomcat连接池问题
- 关于Spring依赖注入的原理
Hibernate映射的时候,@id加到这个新增的主键字段上,而不是学生id字段上。
sname:学生姓名
sex:性别
date:日期
lname:爱好我觉得LZ的DB设置有点不对,既然爱好是多个的,就考虑下使用外键约束,
建立一个爱好表
(
爱好ID
学生ID (外键约束)
爱好名称
)
不过我有点不明白,是不是LZ在设置DB TABLE studentloveview的时候,学生ID没有设置为主键,如果是的话,表设计就不对的,这样会数据沉余,建议LZ把学生ID设置为主键