问题描述
类Member对应表member,主键是自增的,字段名id,类Series对应表series,其中有个member字段,指向member表的id类Series中的member属性已经做了注解:@ManyToOne(targetEntity=Member.class)@JoinColumn(name="member")publicMembergetMember(){returnmember;}
现在有一段代码Seriesseries=newSeries();.....series.setMember(member);session.save(series);//报错,hibernate把member当成一个二进制数据varbinary往数据库里存,当然报错了,应该存member的id才对,怎样让hibernate知道这里要存的是member的id而不是把member对象存进去呢?
解决方案
解决方案二:
错误可以贴出来么?
解决方案三:
吧代码给全了!!!
解决方案四:
报错正常因为你实体类中member这个属性代表映射的类可是你的@JoinColumn里面的也用了member这个属性名JPA就会用这个member属性来作为映射的外键。而你member又是个对象当然会出现这种情况。正常的数据库设计你Series表的应该是memberId才对要么你改成memberId要么你把你member属性换个名字别与这个字段名相同
解决方案五:
你里面就是放的menber对象你是做了关联么关联做好了的话你存对象进去也没关系他数据会自动存id的啊
解决方案六:
我发现问题了,是代码没自动编译,代码是正确的。HQL查出来的是持久化对象吗?
解决方案七:
引用5楼qw7w7的回复:
我发现问题了,是代码没自动编译,代码是正确的。HQL查出来的是持久化对象吗?
数据库中有数据,session中有兑现,就是持久化对象。你说的这种情况是持久化对象。