仅映射JoinTable关系中的一列

时间:2018-08-30 08:51:09

标签: java hibernate jpa entity

我有3张桌子:

BusinessRole

  • 标识符
  • 名称

BusinessRole_ActorType(链接表)

  • role_identifier
  • actorType_identifier

ActorType

  • 标识符
  • 名称(varchar)

我需要创建一个JPA实体BusinessRole,该实体将连接表并在实体中提供actorType列表,同时仅使用ActorType表中的名称。

我知道我可以通过创建一个ActorType实体并为一个@ManyToMany添加一个@JoinTable来获得类似的结果,但这会添加一个额外的对象,我只对String感兴趣值。

下面的代码显示了我想要实现的目标。

@Entity
public class BusinessRole {

    //TODO: Fill in with appropriate annotations :)
    @ManyToMany
    @JoinTable(....)
    private List<String> assignableActorTypes;
}

在此先感谢您的支持。

1 个答案:

答案 0 :(得分:0)

如果您没有为ActorType创建任何实体,则hibernate将无法访问该表,因为hibernate无法知道其存在。

如果您确实不想为ActorType创建模型,则可以使用本机SQL查询。但是请务必检查SQL注入,因为本机sql查询更容易受到此类攻击。

但是我不认为有什么可能的方法来获得List,就像您正在寻找的那样。