【发布时间】:2011-04-18 12:09:28
【问题描述】:
我有 3 张桌子,Role[roleId, roleName]、Token[tokenID, tokenName] 和 ROLETOKENASSOCIATION[roleId, tokenID]。第三个是由休眠自动创建的。现在,如果我简单地编写一个查询来从 Role 类获取所有对象,它会提供所有角色对象以及相关的 tokenID 和 tokenName。
我只是希望关联是单向的。即:角色--->令牌 所以 Role 类中的注释看起来像,
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int roleId;
private String roleName;
@ManyToMany
@JoinTable(name="ROLE_TOKEN_ASSOCIATION",
joinColumns={@JoinColumn(name="roleId")},
inverseJoinColumns={@JoinColumn(name="tokenID")})
private List<Token> tkns;
//Getters & Setters
现在我想要特定角色 ID 的令牌名称。
首先我做了一个这样的查询SELECT tkns.tokenName FROM Role WHERE Role.roleId=:roleId
但是,我最终遇到了一些取消引用错误。
然后我将查询更改为SELECT tkns FROM Role r WHERE r.roleId=:roleId
现在我得到了我想要的。但它也带有 roleId。
我该如何获取 tokenName 本身? 其实我的问题已经解决了,但是我想知道怎么做。
如果有人解释查询构造,这将对我有所帮助。
有什么建议!!
【问题讨论】: