繁体   English   中英

JPA-检查另一个表中的值是否为布尔值

[英]JPA - Check existence of value in another table as Boolean value

我有一个(缩写)类,看起来像这样:

@Entity
@Table
@SecondaryTable(
        name = "SUPER_ADMIN",
        pkJoinColumns = @PrimaryKeyJoinColumn(
                name = "PERSON_ID",
                referencedColumnName = "PERSON_ID"))
public class Person {
  @Id
  @Column(name = "PERSON_ID")
  private Long personId;

  // getters/setters omitted for brevity
}

SUPER_ADMIN表只有一列: PERSON_ID 我想做的是将private Boolean superAdmin添加到Person中,如果该PERSON_ID中存在PERSON_ID ,那将是true

这有可能吗? 我将Hibernate用作我的JPA提供程序,因此我也欢迎专有解决方案。

更新

看来我应该做更多的作业。 戳一戳之后,我看到@SecondaryTable执行内部联接,而不是外部联接。 因此,我的想法根本行不通。 感谢@Elbek的回答-它使我得到了这个启示。

您可以使用JPA回调方法。

public class Person {
  @Id
  @Column(name = "PERSON_ID")
  private Long personId;

  @Transient
  private transient Boolean superAdmin = false;

  // This method will be called automatically when object is loaded
  @PostLoad
  void onPostLoad() { 
    // BTW, personId has to be present in the table since it is id column. Do you want to check if it is 1?
    superAdmin  =  personId == 1;  
  }
}

或者您可以创建简单的吸气方法。

public class Person {
  @Id
  @Column(name = "PERSON_ID")
  private Long personId;

  boolean isSuperAdmin() { 
      return  personId == 1;
  }
}

不能@SecondaryTable建立可选关系。 在这种情况下,除了使用@OneToOne可选关系外,您别无选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM