2016-12-14 5 views
0

Если я хочу, чтобы суровая колонка составляла идентификатор.SQL JPA - Несколько столбцов в качестве первичного ключа

SQL Пример:

CONSTRAINT [PK_NAME] PRIMARY KEY ([Column1],[Column2],[Column3]) 

Как я могу сделать это с классом сущности JPA? через определение столбца?

просто установив поле идентификатора как:

value = Column1 + Column2 + Column3 // aint working. 

ответ

5

Вы должны иметь класс для составного ключа:

public class CompositeKey implements Serializable { 
    private int column1; 
    private int column2; 
    private int column3; 
} 

, а затем в своем классе сущностей использовать @IdClass аннотацию:

@Entity 
@IdClass(CompositeKey.class) 
public class EntityExample { 
    @Id 
    private int column1; 
    @Id 
    private int column2; 
    @Id 
    private int column3; 
    ... 
    ... 
} 

Я думаю, что это должно сработать. Надеюсь, это поможет, ура!

Да, и есть другое решение, которое, как упомянуто в @jlelee, работает, это вопрос предпочтения.

+0

спасибо дружище, что помогло! –

0
  1. Использование @IdClass аннотацию на @Entity класса с последующим @Id аннотацией на отдельных областях, которые являются частью составного первичного ключа.
  2. В качестве альтернативы может использоваться класс @Embeddable, который может состоять из отдельных полей составного первичного ключа, а затем ссылка этого класса может использоваться как атрибут с аннотацией @Embedded в классе @Entity. Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^