Code Monkey home page Code Monkey logo

Comments (5)

zhangkaitao avatar zhangkaitao commented on August 21, 2024

1、这个根据实际情况选, 比如如果需要顺序 则使用List 否则就是Set
2、因为Set是不允许重复的,所以比如
Set.add(new User())
Set.add(new User())

则使用User的默认id 如果id默认是0 则第二个覆盖第一个; 因此造成问题,所以可以考虑 重写hashCode/equals
1、随机id
2、如果是默认值 则认为不相等

from es.

 avatar commented on August 21, 2024

@manytomany(mappedBy = "roleList", fetch=FetchType.LAZY)
@where(clause="del_flag='"+DEL_FLAG_NORMAL+"'")
@orderby("id") @fetch(FetchMode.SUBSELECT)
@NotFound(action = NotFoundAction.IGNORE)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public List getUserList() {
return userList;

}

@manytomany(fetch=FetchType.EAGER)
@jointable(name = "sys_user_role", joinColumns = { @joincolumn(name = "user_id") }, inverseJoinColumns = { @joincolumn(name = "role_id") })
@where(clause="del_flag='"+DEL_FLAG_NORMAL+"'")
@orderby("id") @fetch(FetchMode.SUBSELECT)
@NotFound(action = NotFoundAction.IGNORE)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public List getRoleList() {
return roleList;

}

这样注解下的多对多双向关联,使用List,在通过role.SaveUser(user);的时候,会先执行delete all from user_role,然后再全部insert into。(输出的HQL语句中看出来的这个问题),而使用Set就不会这样,使用Set只会insert新值。

from es.

zhangkaitao avatar zhangkaitao commented on August 21, 2024

不建议多对多 还是使用两个一对多把 而且对于你这种用户-角色 根本不推荐这种做法 如一个角色可能对应许多用户 级联查 会全部查出, 也很难优化

使用非关联吧。 我几乎不用多对多(我还没有遇到很合适的场景)

from es.

zhangkaitao avatar zhangkaitao commented on August 21, 2024

你可以参考我的设计

from es.

 avatar commented on August 21, 2024

好的@!谢谢您的解答~!感谢~

from es.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.