是这样的,今天做项目的时候,碰到一个这样的问题,因为一个PurUser表没有主键,所以生成了两个java文件,一个是PurUser和PurUserId两个java文件//PurGro.java
private String pgid;
private String pgname;
private Set puruserss;//一对多指向无主键表
get/set省略
//PurUser.java
private PurUserId id;
get/set省略
//PurUserId.java
private String staffId;
private String pgid;
get/set/equals/hashCode省略
PurGro.xml<id name="pgid" type="java.lang.String">
<column name="PGID" length="20" />
<generator class="assigned" />
</id>
<property name="pgname" type="java.lang.String">
<column name="PGNAME" length="50" not-null="true" />
</property>
<set name="puruserss" inverse="true" lazy="false">
<key column="pgid"></key>
<one-to-many class="PurUser"/>
</set>
PUR_USER.xml <composite-id name="id" class="com.teddy.ssh.dao.PurUserId">
<key-property name="staffId" type="java.lang.String">
<column name="STAFF_ID" length="20" />
</key-property>
<key-property name="pgid" type="java.lang.String">
<column name="PGID" length="20" />
</key-property>
</composite-id>
以下是我做测试的service类
PurGroService.java public static void main(String[] args) {
ApplicationContext actx = new ClassPathXmlApplicationContext("applicationContext.xml");//bean.xml为配置文件的名字
PurGroDAO dao = (PurGroDAO)actx.getBean("purGroDAO");
PurGro pg = dao.findById("1002");
System.out.println("======size: " + pg.getPuruserss().size() + "======");
}这里通过HIBERNATE的SQL打印出来,集合的结果为0,我自己在数据库查,有结果. 请问我应该如何解决这个无主键的问题呢?(在其他表一对多的测试,集合有结果,就是这种无主键的查询,集合里面没有数据)
分数不多,希望各位大大能解答一下小弟的问题,谢谢
private String pgid;
private String pgname;
private Set puruserss;//一对多指向无主键表
get/set省略
//PurUser.java
private PurUserId id;
get/set省略
//PurUserId.java
private String staffId;
private String pgid;
get/set/equals/hashCode省略
PurGro.xml<id name="pgid" type="java.lang.String">
<column name="PGID" length="20" />
<generator class="assigned" />
</id>
<property name="pgname" type="java.lang.String">
<column name="PGNAME" length="50" not-null="true" />
</property>
<set name="puruserss" inverse="true" lazy="false">
<key column="pgid"></key>
<one-to-many class="PurUser"/>
</set>
PUR_USER.xml <composite-id name="id" class="com.teddy.ssh.dao.PurUserId">
<key-property name="staffId" type="java.lang.String">
<column name="STAFF_ID" length="20" />
</key-property>
<key-property name="pgid" type="java.lang.String">
<column name="PGID" length="20" />
</key-property>
</composite-id>
以下是我做测试的service类
PurGroService.java public static void main(String[] args) {
ApplicationContext actx = new ClassPathXmlApplicationContext("applicationContext.xml");//bean.xml为配置文件的名字
PurGroDAO dao = (PurGroDAO)actx.getBean("purGroDAO");
PurGro pg = dao.findById("1002");
System.out.println("======size: " + pg.getPuruserss().size() + "======");
}这里通过HIBERNATE的SQL打印出来,集合的结果为0,我自己在数据库查,有结果. 请问我应该如何解决这个无主键的问题呢?(在其他表一对多的测试,集合有结果,就是这种无主键的查询,集合里面没有数据)
分数不多,希望各位大大能解答一下小弟的问题,谢谢
解决方案 »
- JS取多个下拉列表的text
- java web+struts1.2开发问题java.lang.ClassNotFoundException: javax.el.ELResolver
- 如何在jsp多窗格页面中实现自个跳转
- 关于Struts2的跳转配置问题,帮忙处理下。谢谢
- struts配置多模块中页面form的action 路径怎么写啊?
- MyEclipse问题(急!!)
- hibernate查询 真急啊 明天交工啊 在线等
- 页面参数传递的问题!急!急!急!
- tomcat连接数据库的问题?
- 哪位高给一个分页的JAVABEAN,多谢!
- 高分求助, 大家来看看: 严重: Error listenerStart
- 怎么加密JSP的数据库连接配置文件
两表关联的表就没有主键阿,A,B表,中间用一个A_B的表做连接两表,这样,这个A_B的表就没有主键阿
你好,因为我是初学HIBERNATE,所以想请问一下,如何做你所说的修改,谢谢
数据库的PUR_USER所以字段都在PurUserId.java里,而PurUser.java这个文件,只有一个和
PurUserId.java文件匹配的字段,而在XML文件里面, 数据库PUR_USER字段全部都放到composite-id里应该把不是关联的字段放回到composite-id标签外边,如下(红色部分,之前我只是用自动反向的功能,
没有自己手动改回去)<class name="com.teddy.ssh.dao.PurUser" table="PUR_USER" schema="WING">
<composite-id name="id" class="com.teddy.ssh.dao.PurUserId">
<key-property name="staffId" type="java.lang.String">
<column name="STAFF_ID" length="20" />
</key-property>
<key-property name="pgid" type="java.lang.String">
<column name="PGID" length="20" />
</key-property>
</composite-id>
<property name="creatby">
<column name="CREATBY"/>
</property>
<property name="creatTime">
<column name="CREAT_TIME"/>
</property>
<property name="memo">
<column name="MEMO"/>
</property>
</class>
还有PurUser和PurUserId这两个java文件,最后应该是这样
PurUserprivate PurUserId id;
private String creatby;
private Date creatTime;
private String memo;
get/set省略
PurUserIdprivate String staffId;
private String pgid;
get/set/equals/hashCode省略
问题解决了