@OneToOne()
@JoinColumn(name=\"vehicle_id\", referencedColumnName=\"vehicleId\")
public Vehicle getVehicle() {
return vehicle;
}
My UserDetails
May be you should try this, adding @ForeignKey
annotation :
@ManyToOne
@ForeignKey(name="FK_some_model")
@JoinColumn(name="some_model_id")
private SomeModel someModel
You can do it also by implementing ImplicitNamingStrategy.determineForeignKeyName
and using
configuration.setImplicitNamingStrategy(
new MyImplicitNamingStrategy())
which is nice as you don't have to do it manually again and again. However, it may be hard to put the relevant information there. I tried to concat everything I got (using three underscore to separate the parts) and ended up with
FK_ACCESS_TEMPLATE____TEMPLATE____TEMPLATE_ID____TEMPLATE_ID__INDEX_B
which isn't really better than
FKG2JM5OO91HT64EWUACF7TJCFN_INDEX_B
I guess, using just the referenced table and column names together with a number for uniqueness would be just fine.
Note also that this seems to be legacy Hibernate stuff, unsupported by JPA.
OTOH it works with Hibernate 5.0.1 (just one week old).
Since JPA 2.1, you can use the @javax.persistence.ForeignKey annotation:
@OneToOne()
@JoinColumn(name="vehicle_id", referencedColumnName="vehicleId", foreignKey=@ForeignKey(name = "Fk_userdetails_vehicle"))
public Vehicle getVehicle() {
return vehicle;
}
Prior to JPA 2.1, you could use Hibernate’s @org.hibernate.annotations.ForeignKey annotation, but this is now deprecated:
@OneToOne()
@JoinColumn(name="vehicle_id", referencedColumnName="vehicleId")
@ForeignKey(name="Fk_userdetails_vehicle")
public Vehicle getVehicle() {
return vehicle;
}
Also you can use @ForeignKey
embedded in @JoinColumn
like this:
@JoinColumn(name = "BAR_ID", foreignKey = @ForeignKey(name = FK_BAR_OF_FOO))
for @ManyToMany
relations you can use foreignKey
and inverseForeignKey
embedded in @JoinTable
like this:
@JoinTable(name = "ARC_EMPLOYEE_OF_BAR"
, joinColumns = {@JoinColumn(name = "BAR_ID")}
, inverseJoinColumns = {@JoinColumn(name = "EMPLOYEE_ID")}
, uniqueConstraints = {@UniqueConstraint(name = "ARC_UK_EMPLOYEE_OF_BAR", columnNames = {"EMPLOYEE_ID", "BAR_ID"})}
, foreignKey = @ForeignKey(name = "ARC_FK_BAR_OF_EMPLOYEE")
, inverseForeignKey = @ForeignKey(name = "ARC_FK_EMPLOYEE_OF_BAR"))