java hibernate 无主键表 更新

遇到这样的问题,用hibernate开发,myeclipse反向生成映射文件,现有表eventAlert,此表是个没有主键的表,生成的映射文件,如下:<hibernate... 遇到这样的问题,用hibernate 开发,myeclipse 反向生成映射文件,现有表eventAlert,此表是个没有主键的表,生成的映射文件,如下:

<hibernate-mapping>
<class name="com.tomsync.vo.EventAlert" table="EventAlert" catalog="obm">
<composite-id name="id" class="com.tomsync.vo.EventAlertId">
<key-property name="eventalertTimeupdate" type="java.util.Date">
<column name="eventalert_timeupdate" length="19" />
</key-property>
<key-property name="eventalertTimecreate" type="java.util.Date">
<column name="eventalert_timecreate" length="19" />
</key-property>
<key-many-to-one name="userObm" class="com.tomsync.vo.UserObm">
<column name="eventalert_userupdate" />
</key-many-to-one>
<key-many-to-one name="userObm_1" class="com.tomsync.vo.UserObm">
<column name="eventalert_usercreate" />
</key-many-to-one>
<key-many-to-one name="event" class="com.tomsync.vo.Event">
<column name="eventalert_event_id" />
</key-many-to-one>
<key-many-to-one name="userObm_2" class="com.tomsync.vo.UserObm">
<column name="eventalert_user_id" />
</key-many-to-one>
<key-property name="eventalertDuration" type="java.lang.Integer">
<column name="eventalert_duration" />
</key-property>
</composite-id>
<many-to-one name="userObmByEventalertUserupdate" class="com.tomsync.vo.UserObm" update="false" insert="false" fetch="select">
<column name="eventalert_userupdate" />
</many-to-one>
<many-to-one name="userObmByEventalertUserId" class="com.tomsync.vo.UserObm" update="false" insert="false" fetch="select">
<column name="eventalert_user_id" />
</many-to-one>
<many-to-one name="event" class="com.tomsync.vo.Event" update="false" insert="false" fetch="select">
<column name="eventalert_event_id" />
</many-to-one>
<many-to-one name="userObmByEventalertUsercreate" class="com.tomsync.vo.UserObm" update="false" insert="false" fetch="select">
<column name="eventalert_usercreate" />
</many-to-one>
</class>
</hibernate-mapping>

如上,虚拟出类 com.tomsync.vo.EventAlertId 作为它的主键,在项目中,读取,没有问题,当我要对 com.tomsync.vo.EventAlertId 类中的 eventalertDuration 做更新的时候,不抱异常,项目运行一切正常,但是,库中的数据就是没有改过来。还是新建时候的数据。
请问,对于虚拟出来的主键 com.tomsync.vo.EventAlertId 类中的属性 eventalertDuration 是不是不可修改?
四楼所说的解决方案只是查询取值的时候,但是怎么更新 复合主键?谁解决该问题,定加分100
展开
 我来答
语大热K
2010-09-03 · TA获得超过1.3万个赞
知道小有建树答主
回答量:1494
采纳率:0%
帮助的人:1773万
展开全部
xml里有的property,在class里必须有对应的field(其实是getter、setter)。
class里有的field,在xml里可以没有。
chuguanyu
2010-08-22 · TA获得超过164个赞
知道答主
回答量:159
采纳率:0%
帮助的人:113万
展开全部
用composite primary keys

http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e2177

@Entity
public class Parent implements Serializable {
@Id
public ParentPk id;
...
}
@Embeddable
public class ParentPk implements Serializable {
String firstName;
String lastName;
...
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weirweiwei
2010-08-21 · TA获得超过312个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:160万
展开全部
从没接触过无主键表操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
g64162769
2010-08-21
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
可以无主键的,无主键就是所有的列联合成为一个主键,映射后会多出一个Java文件是表名id.java文件,意思是封装过了的表存入id那个类中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cheerup360
2010-08-21 · TA获得超过120个赞
知道答主
回答量:133
采纳率:0%
帮助的人:53.4万
展开全部
用hibernate开发要注意数据库中的每张表都应该有一个主键的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式