我们在一些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
答案 0 :(得分:2)
您无法保留最终或静态字段,无论是嵌入式还是非嵌入式都适用。 JPA规范非常清楚,不同JPA提供商的文档也是如此。
JPA Spec $ 2.1
实体类不能是最终的。没有方法或持久化实例 实体类的变量可能是最终的。