Столбец Id взят из других сущностей таблицы JPA - PullRequest
2 голосов
/ 19 октября 2011

У меня есть две таблицы в моей БД.Таблица1 с идентификатором и некоторыми другими столбцами.Table2 - это таблица отношений, в которой у меня есть PK из таблицы1 в качестве идентификатора в таблице2, но я не использую идентификатор в таблице2, и он содержит некоторые значения для других случайных данных.@Id аннотация.Моя проблема в том, что я хотел бы использовать сущность для table1, которая будет вставлена ​​как @Id для сущности table2.Возможно ли это, и если да, то как?

Код на данный момент: ТАБЛИЦА 1

@Entity
@Table(name="Log", schema="logs")
@PersistenceUnit(name="domas")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name="type", discriminatorType = DiscriminatorType.STRING)
public abstract class Log implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="id", nullable=false)
    public String id;

    @Column(name="type", nullable=false)
    @Enumerated(EnumType.STRING)
    public LOG_TYPE type;
// and alot more not related code

Таблица 2

@Entity
@Table(name="Log_Entity", schema="relations")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "relationType", discriminatorType  = DiscriminatorType.STRING)
public abstract class LogRelation implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @OneToOne(mappedBy="id")
    public Log log;

// and alot more not related code

Ответы [ 2 ]

3 голосов
/ 19 октября 2011

Этот mappedBy не имеет смысла, если у вас нет обратной стороны @OneToOne с идентификатором имени атрибута и типом LogRelation:

@OneToOne(mappedBy="id")

При следующем он будет работать:

@Id
@JoinColumn(name="lr_id")//or whatever column name you prefer
@OneToOne
Log log;
0 голосов
/ 19 октября 2011

Вы имеете в виду «составной идентификатор», где идентификатор одного объекта является (частью) идентификатором другого объекта.http://www.datanucleus.org/products/accessplatform_3_0/jpa/orm/compound_identity.html#1_1_uni

...