最近用hibernate操作数据库,出现了很纠结的问题,没办法,最后使用了原生态sql解决,就是取connection,自己写语句实现,好了,现在开始描述问题!
两张表,userinfo userinfo1,两个表都有一个username字段,而且都是主键,设置了一对一关联关系,数据库这边没问题,使用sql语句都能执行。
hibernate这边映射的**.hbm.xml文件中的两个表是这样的
<class name="com.virus.bean.UserInfo" table="userInfo" schema="dbo" catalog="BBS">
<id name="username" type="java.lang.String">
<column name="username" length="20" />
<generator class="assigned" />
</id>
<one-to-one name="userinfo1" class="com.virus.bean.UserInfo1" cascade="all"/>
<property name="password" type="java.lang.String">
<column name="password" length="20" not-null="true" />这个是userinfo表的
<class name="com.virus.bean.UserInfo1" table="UserInfo1" schema="dbo" catalog="BBS">
<id name="username" type="java.lang.String">
<column name="username" length="20" />
<generator class="native" />
</id>
<one-to-one name="userInfo" class="com.virus.bean.UserInfo" />
<property name="userlevel" type="java.lang.String">
<column name="userlevel" length="10" />
</property>这个是userinfo1表的。
我查询的时候没问题的,就是用hibernate取提取userinfo里面的数据的时候,userinfo1里面对应的数据都能出来。
但是插入的时候就出毛病了,因为我的这个是个web项目,userinfo的数据是通过struts的DTO对象实现的,而userinfo1的对象是我自己new出来的,这时候问题就出来了,我使用userinfo.setUserInfo1(userinfo1),userinfo1.setUserInfo(userinfo),这样设置过之后,执行save就提示我:ids for this class must be manually assigned before calling save():userinfo1, 我很纳闷,经过我测试,是这个userinfo1里面的username为空导致的,问题是找到了,可是没法解决的,因为我的这个userinfo1是手动new出来的,所以就为空,不知道该怎么解决了! 大家是不是迷糊了啊!
贴代码public class Uregedit extends ActionSupport {
private UserInfo users;
public UserInfo getUsers() {
return users;
} public void setUsers(UserInfo users) {
this.users = users;
} @Override
public String execute(){
System.out.println(users.getUsername());
System.out.println(users.getPassword());
System.out.println(users.getPid());
System.out.println(users.getSex());//上面的数据都能出来
UserInfo1 ui1=new UserInfo1();
ui1.setUserInfo(users);
users.setUserinfo1(ui1);//一对一关联写法
RegeditUser ru=new RegeditUser();
ru.save(users);
ServletActionContext.getRequest().getSession().setAttribute("user", users);
return SUCCESS;
}
}
希望有人能提供更好的解决方法!
两张表,userinfo userinfo1,两个表都有一个username字段,而且都是主键,设置了一对一关联关系,数据库这边没问题,使用sql语句都能执行。
hibernate这边映射的**.hbm.xml文件中的两个表是这样的
<class name="com.virus.bean.UserInfo" table="userInfo" schema="dbo" catalog="BBS">
<id name="username" type="java.lang.String">
<column name="username" length="20" />
<generator class="assigned" />
</id>
<one-to-one name="userinfo1" class="com.virus.bean.UserInfo1" cascade="all"/>
<property name="password" type="java.lang.String">
<column name="password" length="20" not-null="true" />这个是userinfo表的
<class name="com.virus.bean.UserInfo1" table="UserInfo1" schema="dbo" catalog="BBS">
<id name="username" type="java.lang.String">
<column name="username" length="20" />
<generator class="native" />
</id>
<one-to-one name="userInfo" class="com.virus.bean.UserInfo" />
<property name="userlevel" type="java.lang.String">
<column name="userlevel" length="10" />
</property>这个是userinfo1表的。
我查询的时候没问题的,就是用hibernate取提取userinfo里面的数据的时候,userinfo1里面对应的数据都能出来。
但是插入的时候就出毛病了,因为我的这个是个web项目,userinfo的数据是通过struts的DTO对象实现的,而userinfo1的对象是我自己new出来的,这时候问题就出来了,我使用userinfo.setUserInfo1(userinfo1),userinfo1.setUserInfo(userinfo),这样设置过之后,执行save就提示我:ids for this class must be manually assigned before calling save():userinfo1, 我很纳闷,经过我测试,是这个userinfo1里面的username为空导致的,问题是找到了,可是没法解决的,因为我的这个userinfo1是手动new出来的,所以就为空,不知道该怎么解决了! 大家是不是迷糊了啊!
贴代码public class Uregedit extends ActionSupport {
private UserInfo users;
public UserInfo getUsers() {
return users;
} public void setUsers(UserInfo users) {
this.users = users;
} @Override
public String execute(){
System.out.println(users.getUsername());
System.out.println(users.getPassword());
System.out.println(users.getPid());
System.out.println(users.getSex());//上面的数据都能出来
UserInfo1 ui1=new UserInfo1();
ui1.setUserInfo(users);
users.setUserinfo1(ui1);//一对一关联写法
RegeditUser ru=new RegeditUser();
ru.save(users);
ServletActionContext.getRequest().getSession().setAttribute("user", users);
return SUCCESS;
}
}
希望有人能提供更好的解决方法!
解决方案 »
- 西安windchill开发<j2ee>创业型公司求志同道合的勇士
- 过滤器判断session过期跳转问题
- 如何将给定的日期后推一天
- java RMI 问题 高手请进,小弟在线恭候...先谢谢了啊!
- 输入地址获得地图
- Struts的ActionForward有返回上页的功能吗?
- 配置resin 支持servlet
- 有问那位有JSP应用开发详解(第二版)电子版下载!100分?
- cruiseControl 持续集成 配置工具,求指教。 配置了一上午 有问题,,,,谢谢
- 求大神指导,运行jsp时出现The server encountered an internal error that prevented it from fu
- 请问AJAX的xmlHttp.open("post",null,true)问题
- 这是为什么 more than one row with the given identifier was found: class v_app_index_t??????????
附:identity,native,assigned都试过,都不行的!