@Embedded bean作为最终属性?

时间:2016-09-09 16:15:43

标签: java hibernate jpa java-ee embedding

我们在一些JPA实体中使用了一些@Embeddable bean,以实现更好的代码结构和重用。我想知道的是:我遇到的每个例子都为@Embedded对象提供了setter和getter。为什么?我尝试将它们作为最终字段 - 这也很有用,并且在我们的情况下很有意义,因为嵌入的东西总是存在的。我不知道这有什么不利之处吗?

例如:通常以这种方式完成:

getExistingsomething(somethingId).getId() // will hit db2
somethingRepository.delete(...) // will hit db1

以这种方式写@Embeddable public class Address { // ... } @Entity public class Person { @Embedded private Address address; public void setAddress(Address address) { this.address = address; } public Address getAddress() { return address; } } 时是否有任何问题,当总是有Person

Address

1 个答案:

答案 0 :(得分:2)

您无法保留最终静态字段,无论是嵌入式还是非嵌入式都适用。 JPA规范非常清楚,不同JPA提供商的文档也是如此。

JPA Spec $ 2.1

  

实体类不能是最终的。没有方法或持久化实例   实体类的变量可能是最终的。