如何将一个实体映射到不同的 table
How to map one entity to different table
还有我的classTableOne.java:
@Table(name = "table_one")
@EntityListeners(AuditingEntityListener.class)
public class TableOne {
@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(
name = "UUID",
strategy = "org.hibernate.id.UUIDGenerator")
@Column(name = "id", unique = true, nullable = false, updatable = false)
private String id;
@CreatedDate
@Column(name = "created", nullable = false, updatable = false)
private LocalDateTime created;
@LastModifiedDate
@Column(name = "modified", nullable = false)
private LocalDateTime modified;
@Column(name = "status_desc")
private String statusDesc;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(table = "callers")
private Party caller;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(table = "callee")
private Party callee;
...getter/setter
}
还有Part.java:
@Entity
public class Party {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false, updatable = false)
private long id;
@Column(name = "desc")
private String desc;
@Column(name = "ip")
private String ip;
@Column(name = "port")
private int port;
}
下面的字段:caller,callee inside TableOne.java包含相同的字段(id,desc,port,ip),所以我想把它们分成两份不同的表。例如在 callee
和 caller
表中。
我该怎么做?
您可以为此使用两个实体。只需从 Party
中删除 @Entity
注释并使用 @MappedSuperclass
对其进行注释。然后你可以创建两个实体:
@Entity
@Table(name = "caller")
public class Caller extends Party
和
@Entity
@Table(name = "callee")
public class Callee extends Party
两者将具有相同的字段,但将映射到两个不同的表。
还有我的classTableOne.java:
@Table(name = "table_one")
@EntityListeners(AuditingEntityListener.class)
public class TableOne {
@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(
name = "UUID",
strategy = "org.hibernate.id.UUIDGenerator")
@Column(name = "id", unique = true, nullable = false, updatable = false)
private String id;
@CreatedDate
@Column(name = "created", nullable = false, updatable = false)
private LocalDateTime created;
@LastModifiedDate
@Column(name = "modified", nullable = false)
private LocalDateTime modified;
@Column(name = "status_desc")
private String statusDesc;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(table = "callers")
private Party caller;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(table = "callee")
private Party callee;
...getter/setter
}
还有Part.java:
@Entity
public class Party {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false, updatable = false)
private long id;
@Column(name = "desc")
private String desc;
@Column(name = "ip")
private String ip;
@Column(name = "port")
private int port;
}
下面的字段:caller,callee inside TableOne.java包含相同的字段(id,desc,port,ip),所以我想把它们分成两份不同的表。例如在 callee
和 caller
表中。
我该怎么做?
您可以为此使用两个实体。只需从 Party
中删除 @Entity
注释并使用 @MappedSuperclass
对其进行注释。然后你可以创建两个实体:
@Entity
@Table(name = "caller")
public class Caller extends Party
和
@Entity
@Table(name = "callee")
public class Callee extends Party
两者将具有相同的字段,但将映射到两个不同的表。