问题是这样的。
假如我有两张表,一张是user表,里面的主键是userid,另一张是诚信认证表Integrity,里面的主键也是userid。
第一个问题,就是这里是不是该用到两张表的一对一单向关联关系?
一对一的单向关联关系应该是谁指向谁?
我起初的解法是这样的,把诚信表中的主键userid改为一个独立的主键integertyid,然后在数据库中user表中加了一个外键字段integertyid,在程序中是这样实现的,在T_user(user表)类中加入Integerty integerity对象的引用,然后在get方法上注解配置了和诚信表的单向关联映射,然后我就进行了测试,我首先注册一个用户,可是注册时候就报错了
java.sql.BatchUpdateException: Unknown column 'integrity' in 'field list'
注册的时候我用的是this.getHibernateTemplate().save(user);
提示的错误的意思是数据库中没有integrity。这个我也能理解因为user表中根本没有integrity有的只是integrityid,可是我的单向一对一关系的配置都是按照网上的说的做的啊,到底哪里出了错了望大神提醒。
还有就是如果我的思路不对那按照我开始时候表的结构该怎样去实现单向的一对一关联呢?
第二个问题,就是如果不用一对一单行关联关系,那我删除了某一个用户以后他的诚信认证信息还在,怎么解决?
希望大神们能给我解答。再次先谢过了。Hibernatessh
假如我有两张表,一张是user表,里面的主键是userid,另一张是诚信认证表Integrity,里面的主键也是userid。
第一个问题,就是这里是不是该用到两张表的一对一单向关联关系?
一对一的单向关联关系应该是谁指向谁?
我起初的解法是这样的,把诚信表中的主键userid改为一个独立的主键integertyid,然后在数据库中user表中加了一个外键字段integertyid,在程序中是这样实现的,在T_user(user表)类中加入Integerty integerity对象的引用,然后在get方法上注解配置了和诚信表的单向关联映射,然后我就进行了测试,我首先注册一个用户,可是注册时候就报错了
java.sql.BatchUpdateException: Unknown column 'integrity' in 'field list'
注册的时候我用的是this.getHibernateTemplate().save(user);
提示的错误的意思是数据库中没有integrity。这个我也能理解因为user表中根本没有integrity有的只是integrityid,可是我的单向一对一关系的配置都是按照网上的说的做的啊,到底哪里出了错了望大神提醒。
还有就是如果我的思路不对那按照我开始时候表的结构该怎样去实现单向的一对一关联呢?
第二个问题,就是如果不用一对一单行关联关系,那我删除了某一个用户以后他的诚信认证信息还在,怎么解决?
希望大神们能给我解答。再次先谢过了。Hibernatessh
解决方案 »
- java linux操作word,替换某些文字
- form表单请求action的问题
- 救命:关于ibatis和ehcache的问题,谢谢
- 在用validator进行验证时,出现以下错误.急,请教各位大侠
- 我学JAVA这一年:年终总结!
- 我想请问一下各位大哥,我应该怎样学java?
- 这个J2EE SDK 开发包里面的APPLICATION SERVER到底是什么东西!!回答有分!!!
- 请各位高手推荐一本学习J2EE的好书
- struts 验证框架,写了个validation不起作用
- SSH框架,启动的时候报错,大神们,帮帮忙啊,在线等,急!!!!!
- easyUI 中下拉框无法显示
- EJB是不是过时了
第二个问题,如果不用关联关系,不管怎样,Integrity表中肯定会存个User表的id什么的吧,所以删除User之后,根据那个id什么什么的,删掉Integrity表中的数据就可以了吧.....
Unknown column 'integrity' in 'field list'这个错误应该是你的integrity在表中不存在的。到网上查一下,好多例子的,提高解决问题的能力更重要,你觉得呢?
如果我用单向一对一的该怎么做呢?就按我刚开始的思路,就是integrity中有一个主键同时也是外键的userid,然后怎么配置呢?是在integrity的主键userid的get方法上进行注解的onetonone对吗?然后后边接着配置cascade.ALL这样就可以级联删除了吗?我觉得这样的话就反了吧,
这样做的话我的理解就是成了integrity表对user表了,这样的话是不是成了删除诚信认证表级联着user表就一块删除了?这样的话跟我的意思就相反了,我的意思是想当删除user表的时候级联的删除该user的认证信息。 呵呵刚学不太理解望能解答。
我想实现的是用户存在了,诚信表不一定存在,但是诚信表存在了一定有对应的用户存在。
这样是不是可以用单向一对一的配置实现?
我是这样配置的。
在user中声明了一个Integrity的引用integrity
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name="UserId",unique=true)
public Integrity getIntegrity() {
return integrity;
}
public void setIntegrity(Integrity integrity) {
this.integrity = integrity;
}
然后在Integrity表中的userid的主键生产策略设置为
@Id
@Column(name="UserId")
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "foreign",
parameters = { @Parameter(name = "property", value = "employee") })
我就配置了这些,但是问题出现了。当我注册的时候它会报错
java.sql.BatchUpdateException: Unknown column 'integrity' in 'field list'
com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1269)就是这个错误?
该怎么办?在线等