Определить PK_name через аннотацию JPA - PullRequest
0 голосов
/ 18 февраля 2020

Я использую весеннюю загрузку с SQL сервером, и я хочу определить PK_name из весны, а не позволить ему генерироваться автоматически.

Hibernate добавляет номер суффикса к первичному ключу.

Поэтому вместо PK__Team__3214EC07FA39AD63 Я хотел бы дать это имя PK_Team

 @Entity
public class Team {
  @Id
@Column(name = "Id" )
private Integer id;
@Column(name = "FirstName")
private String firstName;
@Column(name = "FamilyName")
private String familyName;
@Column(name = "Email")
private String email;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

1 Ответ

0 голосов
/ 19 февраля 2020

Невозможно указать имя, однако я думаю, что возможно возможно универсально предотвратить суффикс с помощью пользовательского диалекта, который переопределяет метод

org.hibernate.dialect.Dialect#getAddPrimaryKeyConstraintString(String constraintName)

.

Вы не можете ничего сделать с переданным именем, однако вы можете вставить его, чтобы удалить суффикс.

public class MyCustomSqlServerDialect extend SqlServer2012Dialect{

    @Override
    public String getAddPrimaryKeyConstraintString(String constraintName) {
        // default implementation
        // return " add constraint " + constraintName + " primary key ";

        return " add constraint " + 
                    constraintName.subString(0, constraintName.lastIndexOf("__")) +
                        " primary key "   
    }
}

Тогда, очевидно, просто установите этот диалект в соответствующем свойстве Spring / Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...