@ManyToMany@Entity
public class Customer implements Serializable {
    ...
@ManyToMany
@JoinTable(
name="CUST_PHONE",
joinColumns=
@JoinColumn(name="CUST_ID", referencedColumnName="ID"),
inverseJoinColumns=
@JoinColumn(name="PHONE_ID", referencedColumnName="ID")
    )
public Set<PhoneNumber> getPhones() { 
return phones; 
    }
    ...
}

解决方案 »

  1.   

    如果按照我的思路我会将中间表携带字段的表同样表现为一个实体。就一般的多对多的操作而言,一般多对多中间表需要携带字段的都是会对这个中间表进行频繁的操作。看下下面这2个帖子。有问题可以再联系我。这个帖子讲了如何来做:
    http://topic.csdn.net/u/20071227/13/8be476e9-507d-4ae0-9156-dfd29b92abf0.html这个帖子讲了做的意义:
    http://topic.csdn.net/u/20071228/23/a331e107-75dd-458d-b211-b7b5863eedd4.html
      

  2.   

    看来要多看看jpa了比萨 回来了
      

  3.   

    两边都用List互相引用就可以多对多隐射
      

  4.   

    pizzame懂你的意思,不过,针对访问量、数据量、并发多的情况,关系全部人工维护,的确性能和扩展修改都方便但是对于小系统,总共就那么不到10个表,讲究的就是一个开发速度,东西不复杂,软件的报价不高,就当然是能简单就简单,能省时间就省时间,反正一等价钱一等货。首先,感谢你将你的经验传授给大家,在做大型系统的时候,的确应该像你说的那样不过,我现在还是想知道,我说的这种情况,三个表,能否只用两个实体实现呢?那个带有其他字段的中间表不对应成一个实体?
      

  5.   

    小项目用什么多对多~一个搞不好出了问题,改起来头痛得很。不如就建立最简单的隐射,不建立任何关系,任何查询都用原生sql
      

  6.   


    在早先使用hibernate的时候我确实是做过这种映射的,如果你细心的话可以发现在我荒芜的博客里还是残存着对这种配置方法的说明,呵呵~~~可以参见http://blog.csdn.net/pizzame/archive/2007/10/09/1816943.aspx。不过就设计方法和设计效率来说,多对多的体现都是要差于我之前所说的方法的。如果你接触过simplcore的demo你会发现,没有多对多关系的设计非常简单而且快捷的。
      

  7.   

    明白了,真的非常感谢楼上的
    在csdn逛了几年了,第一次遇到楼上这么热心的
    由衷的感谢虽然按照你说的,等于还是不可能只用两个类来实现我说的这类情况,不过你的文章的确还是有帮助的我会去看看simplcore的demo的,虽然我现在还不知道那是什么东西。