1 package net.sumaris.core.dao.technical.hibernate;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import org.hibernate.boot.model.naming.*;
26
27 public class HibernateImplicitNamingStrategy extends ImplicitNamingStrategyLegacyJpaImpl implements ImplicitNamingStrategy {
28
29 private static final String FK_SUFFIX = "Fk";
30
31 private static final String FK_CONSTRAINT_SUFFIX = "c";
32
33 @Override
34 public Identifier determineJoinColumnName(ImplicitJoinColumnNameSource source) {
35
36 if (source.getNature() != ImplicitJoinColumnNameSource.Nature.ELEMENT_COLLECTION
37 && source.getAttributePath() != null
38 && ("id".equalsIgnoreCase(source.getReferencedColumnName().getText())
39 || "code".equalsIgnoreCase(source.getReferencedColumnName().getText()))) {
40 String name = this.transformAttributePath(source.getAttributePath()) + FK_SUFFIX;
41 return IdentifierHelper.normalize(this.toIdentifier(name, source.getBuildingContext()));
42 }
43 return IdentifierHelper.normalize(super.determineJoinColumnName(source));
44 }
45
46 @Override
47 public Identifier determineForeignKeyName(ImplicitForeignKeyNameSource source) {
48
49 if (source.getColumnNames().size() == 1) {
50 String name = source.getTableName() + "_" + source.getColumnNames().get(0).getText() + FK_CONSTRAINT_SUFFIX;
51 return IdentifierHelper.normalize(this.toIdentifier(name, source.getBuildingContext()));
52 }
53 return IdentifierHelper.normalize(super.determineForeignKeyName(source));
54 }
55
56
57
58 }