hibernate中的一个要注意的连接关联问题
2008-07-13 23:18
302 查看
情景为,投票程序.游客可以对一个作品进行投票的,它们之间有点象多对多的关系,投票时,每个单独的IP每天
只能投某个作品一次,要投第2次的话只能等第2天了.数据库结构表为:
ip表
id 自动递增
ip ip
votetime 投票时间
pid 该投票是投哪一个作品,关联photo表的pid字段
那么分别看vote类的domain设计
public class Vote {
private int id;
private int voteid;
private String ip;
private String votetime;
private Photo photo;
////省略getter/setter;
public class photo
{
private Set ip;
//其他省略.
vote.hbm.xml:
<hibernate-mapping>
<class table="ip" name="liao.domain.Vote">
<id name="id" column="id" type="integer">
<generator class="increment" />
</id>
<property name="ip"/>
<property name="votetime"/>
<many-to-one column="pid" name="Photo" not-null="true" class="liao.domain.Photo"/>
</class>
</hibernate-mapping>
photo.hbm.xml
其中关联的部分为
<set cascade="none" name="ip" inverse="true" lazy="false">
<key column="pid" />
<one-to-many class="liao.domain.Vote" />
</set>
好了,上面四者都有的话,下面有个场景,很实际,是查询的,要查询某个PID的作品是否已经有IP投过票了,应该这样搞.
Object[] params=new Object[]{pid};
List dataList = this.getHibernateTemplate().find("from Vote as i where i.Photo.pid=?",pid);
// List dataList=this.getHibernateTemplate().find("select ip from Vote ip where ip.pid=?",pid);
if (dataList.size() == 0) {
return null;
}
else
{
System.out.println(dataList.get(0).toString());
return (Vote)dataList.get(0);
要特别注意 List dataList = this.getHibernateTemplate().find("from Vote as i where i.Photo.pid=?",pid);
的写法,这样比较好.
只能投某个作品一次,要投第2次的话只能等第2天了.数据库结构表为:
ip表
id 自动递增
ip ip
votetime 投票时间
pid 该投票是投哪一个作品,关联photo表的pid字段
那么分别看vote类的domain设计
public class Vote {
private int id;
private int voteid;
private String ip;
private String votetime;
private Photo photo;
////省略getter/setter;
public class photo
{
private Set ip;
//其他省略.
vote.hbm.xml:
<hibernate-mapping>
<class table="ip" name="liao.domain.Vote">
<id name="id" column="id" type="integer">
<generator class="increment" />
</id>
<property name="ip"/>
<property name="votetime"/>
<many-to-one column="pid" name="Photo" not-null="true" class="liao.domain.Photo"/>
</class>
</hibernate-mapping>
photo.hbm.xml
其中关联的部分为
<set cascade="none" name="ip" inverse="true" lazy="false">
<key column="pid" />
<one-to-many class="liao.domain.Vote" />
</set>
好了,上面四者都有的话,下面有个场景,很实际,是查询的,要查询某个PID的作品是否已经有IP投过票了,应该这样搞.
Object[] params=new Object[]{pid};
List dataList = this.getHibernateTemplate().find("from Vote as i where i.Photo.pid=?",pid);
// List dataList=this.getHibernateTemplate().find("select ip from Vote ip where ip.pid=?",pid);
if (dataList.size() == 0) {
return null;
}
else
{
System.out.println(dataList.get(0).toString());
return (Vote)dataList.get(0);
要特别注意 List dataList = this.getHibernateTemplate().find("from Vote as i where i.Photo.pid=?",pid);
的写法,这样比较好.
相关文章推荐
- hibernate中的一个要注意的连接关联问题
- hibernate中的一个要注意的连接关联问题
- 将控件与Control类的变量关联时要注意的一个问题
- 对java中的String采用+=连接字符串需要注意的一个问题
- Hibernate原生SQL查询多表关联,SQL语句要注意的问题
- ORA-02041: 客户数据库未开始一个事务处理 .NET 连接低版本ORACLE时需要注意的问题
- 在MyEclipse中使用Hibernate需要注意的一个问题
- 在实现一个WIFI无线连接设置中需要注意的问题
- 多表内连接查询关键字不对应时要注意的一个问题
- 在使用Hibernate时,因为一个查询需要更多的表连接而要使用SQL来解决性能问题。然而返回的结果集中包含了没有映射的Entity类中的表字段,在这个SQL中还有使用如何将层次关系的父子结点显示为横行
- Hibernate中1对多关联使用中容易犯错误的一个问题
- 使用hibernate映射应注意的一个问题
- Hibernate多对多双向关联需要注意的问题(实例说话)
- JSP连接SQLServer数据库特别要注意一个小问题得到解决
- Hibernate原生SQL查询多表关联,SQL语句要注意的问题
- Hibernate原生SQL查询多表关联,SQL语句要注意的问题
- .net连接access数据库保存小数需要注意的一个问题
- 对java中的String采用+=连接字符串需要注意的一个问题
- sqoop之从oracle导入hbase的问题与sqoop hbase 需要注意的一个问题
- 解释一个关于Hibernate lazy的问题