Mysql
 sql >> Baza danych >  >> RDS >> Mysql

próbuję stworzyć dwa różne mapowanie wielotoonowe tabel w jednej kolumnie dla jednej klasy encji

Myślę, że to, czego szukasz, jest wyjaśnione w Hibernuj sekcję ORM dotyczącą @Any adnotacja :

@Any(metaColumn = @Column(name = "userType"))
@AnyMetaDef(name = "PropertyMetaDef", metaType = "string", idType = "long",
            metaValues = {
                    @MetaValue(value = "User", targetEntity = User.class),
                    @MetaValue(value = "LDAP", targetEntity = LDAPUser.class)
            }
    )
@JoinColumn(name="assignedto_id", referencedColumnName="id", insertable=false, updatable=false)   
private Object assignedTo

Ale nie utworzy żadnych kluczy obcych. Nie sądzę nawet, aby możliwe było utworzenie dwóch kluczy obcych w tej samej kolumnie dla różnych tabel (czy to ma sens?).

Alternatywnie, jeśli te dwie klasy mogłyby wywodzić się ze wspólnej superklasy, możesz użyć Mapowanie dziedziczenia osiągnąć coś podobnego.

Na przykład:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public static class UserEntity {

    @Id
    private Long id;

    ...
}

@Entity
public class User extends UserEntity {
...
}

@Entity
public class LDAPUser extends UserEntity {
...
}

a potem

      @ManyToOne
      @JoinColumn(name="assignedto_id", referencedColumnName="id", insertable=false, updatable=false)   
      private UserEntity assignedto;

Utworzy to jednak trzy tabele. Tabela UserEntity będzie miał klucz obcy w assignedto_id kolumna. User id i LDAPUser id będzie miał ograniczenie dla każdego UserEntity ID. Zasadniczo zbliżasz się do tego, o co prosiłeś.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql problem z informacją_schema.tables

  2. MySQL PHP count(*) zwraca coś dziwnego

  3. Nie można połączyć się z pulą połączeń JDBC z Glassfish

  4. Sterownik JDBC nie znalazł błędu w monkeyrunner/jython

  5. Przypadki użycia MySQL `FORCE INDEX`?