brainbaking/content/wiki/code/java/persistence.md

1.2 KiB

+++ title = "persistence" draft = false tags = [ "code", "java", "persistence" ] date = "2013-03-12" +++

Persistence

JPA Collections mapping

Hoe map ik een koppeltabel zonder die als entiteit zelf in ons domein te hebben?

Zo:

    @OneToMany(fetch ###### LAZY, cascade  { MERGE, PERSIST })
    @JoinTable(name = "physicalzonezonealias",
            joinColumns ###### @JoinColumn(name  "physicalzone", referencedColumnName = "id"),
            inverseJoinColumns ###### @JoinColumn(name  "zonealias", referencedColumnName = "id"))
    @SequenceGenerator(name ###### "physicalzonezonealias_id", sequenceName  "physicalzonezonealias_id", allocationSize = 1)
    @CollectionId(columns ###### @Column(name  "id"), type ###### @Type(type  "int"), generator = "physicalzonezonealias_id")
    private List<Zonealias> zoneAliases = new ArrayList<Zonealias>();

Wat is hier leuk aan?

  • Gebruik @JoinTable, tabel zelf vervuilt domein niet
  • Extra primary key kolom kan je ook mappen met '@CollectionId'' (Hibernate specifiek), die dan verwijst naar een generator!

Dat laatste is niet nodig als de primary key constraint op beide foreign keys zit.