Child pages
  • Kötőtábla embedelése JPA vagy Hibernate segítségével?
Skip to end of metadata
Go to start of metadata

Sziasztok!
Szeretnék segítséget kérni abban hogy egy-több kapcsolatnál a kötőtáblát hogyan tudom embeded-ként kezelni?

Ez egy hibernate(4.2.0.CR2) + envers.

db táblák:
CREATE TABLE IF NOT EXISTS `termek` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nev` varchar(255) COLLATE utf8_unicode_ci NOT NULL,.......
`version` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `idindex` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=487 ;
CREATE TABLE IF NOT EXISTS `kategoria_koto` (
`kategoria_id` bigint(20) NOT NULL,
`termek_id` bigint(20) NOT NULL,
`kategoria_version` bigint(20) NOT NULL DEFAULT '1',
KEY `fk_kategoria_koto_kategoria1_idx` (`kategoria_id`),
KEY `fk_kategoria_koto_termek1_idx` (`termek_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `kategoria` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nev` varchar(255) COLLATE utf8_unicode_ci NOT NULL,......
`version` bigint(20) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=35 ;

Én szeretném a kötőtáblát embedelni(simán joinolni tudom és akkor minden jól mükődik csak akkor a kategoria_version oszlopot nem tudom kezelni...), neten találtam sok megoldást de vagy én implementáltam rosszul vagy nem volt jó a példa... :( elvileg @elementcollection-vel + @embeded osztállyal meg lehet oldani de nem jött össze :(( én csak azt szeretném elérni hogy minden termék mentésnél a kategoria_version oszlop aktualizálódjon az adott kategoria version oszlopával...
Ha a problémát JPA szinten meg lehet oldani akkor az nagyon jó lenne, de ha nem akkor jó lesz hibernates eszköz is :)
Előre is köszönök minden segítséget

      
      
Page viewed times
  • No labels

3 Comments

  1. Ööö... izé... nem egyfajta optimistic locking szerű dolgot szeretnél?

    1. Nem igazan (smile) nekem a kototablaba azert kell a version oszlop mert ugye auditalt a kategoria viszont a kototablabol nem tudom megmondani ha egy termekhez kotott kategoria valtozott miota a termeket utoljara elmentettek...(mivel a hibernate mindig az adott kategoria utolso version-jet adja vissza...) viszont igy ha minden termek mentesnel elmentem a kototablaba az adott relaciohoz az akkor kategoria versiont akkor sima loadnal ha nem egyezik a kategoria sajat versionje a kototablaban levovvel akkor tudom mondani a usernek hogy vigyazzon mert a kategoria egyed adatait valtoztak ... akar meg ha szukseges elo is tudom keresni az a kategoria entity-t a version alapjan mivel a kototablaba benne van (smile) igy ertheto hogy mit szeretnek elerni ? 

  2. ha igy kotom be a kototablat

    @OneToMany(targetEntity = KategoriaDomain.class, fetch = FetchType.EAGER)
    @JoinTable(name = "kategoria_koto", joinColumns = @JoinColumn(name = "termek_id"), inverseJoinColumns = @JoinColumn(name = "kategoria_id"))

    public List<KategoriaDomain> getKategoria() {

    akkor zokszo nelkul minden flottul mukodik es el is menti a listat mindig jol(sot meg auditalja is (smile)) viszont igy az extra kategoria_version oszlopot nem tudom irni es olvasni ... lehet jobb megoldas lenne a kategoria_koto-nek egy id-t adni es ugy csinalni belole egy entity-t ?