Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

saya mencoba membuat dua tabel yang berbeda pemetaan manytoone dalam satu kolom untuk satu kelas entitas

Saya pikir apa yang Anda cari dijelaskan dalam Hibernasi bagian ORM tentang @Any anotasi :

@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

Tapi itu tidak akan membuat kunci asing. Saya bahkan tidak berpikir mungkin untuk membuat dua kunci asing pada kolom yang sama untuk tabel yang berbeda (apakah itu masuk akal?).

Atau, jika kedua kelas dapat diperluas dari kelas super umum, Anda dapat menggunakan Pemetaan warisan untuk mencapai sesuatu yang serupa.

Misalnya:

@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 {
...
}

lalu

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

Ini akan membuat tiga tabel sekalipun. Tabel UserEntity akan memiliki kunci asing pada assignedto_id kolom. User id dan LDAPUser id akan memiliki batasan masing-masing pada UserEntity Indo. Pada dasarnya, mendekati apa yang Anda minta pada awalnya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mempercepat pemuatan data ke InnoDB (LOAD DATA INFILE)?

  2. Doctrine2.3 dan kaskade OneToOne tampaknya tidak berfungsi

  3. .Net MySql error Kunci yang diberikan tidak ada dalam kamus

  4. Cara update kolom id mulai dari 1 lagi

  5. Bidang JPA @Version tidak bertambah