'HBM Mapping to Annotation class Conversation

Hi am trying to covert hbm mapping to annotation class and I have encountered a complex mapping Here is the code :

<class name="Person">
<id name="id" column="personId">
    <generator class="native"/>
</id>
<set name="addresses" table="PersonAddress" cascade="save-update">
    <key column="personId" foreign-key="fk_person_address_k0"/>
    <many-to-many column="addressId" unique="true" class="Address"/>
</set>
<subclass name="Address" extends="Person" discriminator-value="not-null">
    <join table="PersonAddress" inverse="true" optional="true">
        <key column="addressId" foreign-key="fk_person_address_k1"/>
        <many-to-one name="persondata" column="personId" not-null="true"/>
    </join>
</subclass>
</class>

I tried to covert this mapping to annotation but am not sure it's correct Here is the annotation class :

Person.java

@Entity
    public class Person
    
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "ADDRESS_SEQ")
    @SequenceGenerator(name="ADDRESS_SEQ",sequenceName = "ADDRESS_SEQ")
    private Long id;
    
    @ManyToMany()
    @JoinTable(name="PersonAddress",joinColumns = {@JoinColumn(name = "personId")},inverseJoinColumns = {@JoinColumn(name = "addressId",unique = true)})
    @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    private Set<Address> addresses = new HashSet<>();

Address.Java

@Entity
@DiscriminatorValue("not null")
public class Address extends Person {

    @NoToString
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinTable(name="PersonAddress",
            joinColumns = @JoinColumn(name = "addressId"),
            inverseJoinColumns = {@JoinColumn(name="personId")})
    private Person persondata;

can anybody help me to convert this mapping file



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source