@AttributeOverride是什么意思?

jay*_*del 32 java attributes overriding jpa

我现在正在(快速)使用EJB,当我离开时它发生了巨大的变化(到目前为止更好).然而,我遇到了一个我正在努力的概念,并希望更好地理解,因为它似乎在我们(我工作的地方,而不是我和我头脑中的所有声音)代码中使用了相当多的代码.

这是我在一本书中找到的例子.它是显示如何使用@EmbeddedId注释的示例的一部分:

@Entity
public class Employee implements java.io.Serializable
{
    @EmbeddedId
    @AttributeOverrides({
        @AttributeOverride(name="lastName", column=@Column(name="LAST_NAME"),
        @AttributeOverride(name="ssn", column=@Column(name="SSN"))
    })

    private EmbeddedEmployeePK pk;

    ...
}
Run Code Online (Sandbox Code Playgroud)

EmbeddedEmployeePK类是一个相当简单的@Embeddable类来定义对@Columns:lastNamessn.

哦,我从Rubinger&Burke的O'Reilly的Enterprise JavaBeans 3.1中提取了这个例子.

在此先感谢您提供给我的任何帮助.

zmf*_*zmf 39

它说构成嵌入式id的属性可能已经预定义(通过显式或隐式映射)列名.通过使用@AttributeOverride你所说的"忽略你有关于它存储在哪个列的其他信息,并使用我在这里指定的那个".


Rav*_*ekh 27

AttributeOverride来

在UserDetails类中,我已覆盖homeAddress&officeAddresswithAddress

这一个地址POJO将在DB中用于两个表.

D B:

Table1      Table2
STREET_NAME HOME_STREET_NAME
CITY_NAME   HOME_CITY_NAME
STATE_NAME  HOME_STATE_NAME
PIN_CODE    HOME_PIN_CODE
Run Code Online (Sandbox Code Playgroud)


ska*_*man 8

EmbeddedEmployeePK类是一个相当简单的@Embeddable类,它定义了一对@Columns:lastName和ssn.

不完全 - EmbeddedEmployeePK定义一对属性,然后映射到列.该@AttributeOverride注解允许你将覆盖到嵌入式类的属性映射的列.

这种情况的用例是当嵌入类用于其列名不同的不同情况时,需要一些机制来更改这些列映射.例如,假设您有一个实体,其中包含两个相同嵌入的单独实例 - 它们不能同时映射到相同的列名.