2016-07-06 2 views
0

에 (포함 가능한 임베디드) 하나 개 이상의 구성 요소 유형을 사용할 수 있지만, 모든 예제는 예를 들어, 나에게 하나의 객체에서 한 Component을 보여주는 방법 :내가 구글 주석

나는 두 가지를 갖고 싶어 https://dzone.com/tutorials/java/hibernate/hibernate-example/hibernate-mapping-component-using-annotations-1.html

public class PhoneNumber { 
    // Phone details 
    private int areaCode = 0; 
    private int phoneNumber = 0; 
    private String name = null; 
} 

public class Person { 
    private String firstName = null; 
    private String nickName = null; 
    private String lastName = null; 
    // Multiple phone details 
    private PhoneNumber homePhone = null; 
    private PhoneNumber mobilePhone = null; 
} 

Hibernate 매핑 :

<class name="Person" table="PERSON"> 
<id name="id" column="PERSON_ID"> 
    <generator class="native"/> 
</id> 

<property name="firstName" column="FIRST_NAME" /> 
... 

<component name="homePhone" class="PhoneNumber"> 
    <property name="areaCode" column="HOME_AREA_CODE"/> 
    <property name="phoneNumber" column="HOME_PHONE_NUMBER"/> 
    <property name="name" column="HOME_NAME"/> 
</component> 

<component name="mobilePhone" class="PhoneNumber"> 
    <property name="areaCode" column="MOBILE_AREA_CODE"/> 
    <property name="phoneNumber" column="MOBILE_PHONE_NUMBER"/> 
    <property name="name" column="MOBILE_NAME"/> 
</component> 
</class> 
예를 들어 하나의 객체에

위의 숫자는 Component입니다. homePhonemobilePhone입니다. 위의 번역 방법 HibernateJava으로 매핑 주석? @Embeddable

열 이름이 다른 각각의 전화 구성 요소로

답변

1
@Embeddable  
public class PhoneNumber { 
// Phone details 
    private int areaCode = 0; 
    private int phoneNumber = 0; 
    private String name = null; 
} 

public class Person { 
    private String firstName = null; 
    private String nickName = null; 
    private String lastName = null; 
    // Multiple phone details 
    @Embedded 
    @AttributeOverrides({ 
    @AttributeOverride(name="areaCode",[email protected](name="HOME_AREA_CODE"), 
    @AttributeOverride(name="phoneNumber",[email protected](name="HOME_PHONE_NUMBER"), 
    @AttributeOverride(name="name",[email protected](name="HOME_NAME")}) 
    private PhoneNumber homePhone = null; 
    @Embedded 
    @AttributeOverrides({ 
    @AttributeOverride(name="areaCode",[email protected](name="MOBILE_AREA_CODE"), 
    @AttributeOverride(name="phoneNumber",[email protected](name="MOBILE_PHONE_NUMBER"), 
    @AttributeOverride(name="name",[email protected](name="MOBILE_NAME")}) 
    private PhoneNumber mobilePhone = null; 
    } 

주석 당신이 전화 클래스입니다. @AttributeOverrride를 사용하고 엔티티로 인해 적절한 열 이름을 지정하십시오. 그러면 구성 요소 클래스가 다른 열에 매핑됩니다.