JPA'yı eski bir veritabanına korkunç bir tasarıma sahip olarak uygulamak zorundayım. Maalesef bunu değiştirmek mümkün değil. Neyse ki sadece salt okunur erişim içindir.@ManyToMany birleştirme tablosu olmadan (eski veri tabanı)
Bulduğum en tuhaf şeylerden biri, birleştirme (veya ara tablo) tablosu olmayan "çoktan çoğa" bir ilişkidir. Bu tablo yapısının basitleştirilmiş bir modeli olup:
USER ACCESS
---- ------
ID int primary key ID int primary key
NAME varchar2(20) NAME varchar2(20)
ACCESS_GROUP int ACCESS_GROUP int
- ACCESS_GROUP sütun
- bir KULLANIM N erişim
- bir ERİŞİM N kullanıcı ile ilişkili olabilir ile ilgili olabilir, her iki tablolarda tekrarlanabilir
public class User {
private Integer id;
private String name;
@ManyToMany private List<Access> accessList;
}
public class Access {
private Integer id;
private String name;
@ManyToMany private List<User> userList;
}
:
"Kavramsal olarak" Bu tabloları Java sınıfları ile bu şekilde eşlenmelidir
Ama bence bu mümkün değil. Sizce bu tablolara JPA'da erişip bunlarda gezinmek için en iyi yaklaşım hangisidir?
Aslında bu bir M değildir. Bir Kullanıcı veya Erişim satırının iki erişim grubunun parçası olduğunu nasıl kaydedersiniz? Bunu başarmanın tek yolu, diğer sütunları (PK dışındaki) çoğaltmak ve bu durumda tasarım perspektifinden farklı varlıklardır. Bunun yerine, sahip olduğunuz iki bağımsız 1: M ilişkileri. – Thomas