'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 |
|---|
