Hibernate: @UniqueConstraint mit @ManyToOne Feld?
Verwenden Sie den folgenden code:
@Entity
@Table(uniqueConstraints=[@UniqueConstraint(columnNames=["account","name"])])
class Friend {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
public Long id
@ManyToOne
public Account account
public String href
public String name
}
Bekomme ich die folgende Fehlermeldung:
org.hibernate.AnnotationException: Unable to create unique key constraint (account, name) on table Friend: account not found
Scheint es das zu tun hat mit der @ManyToOne-Einschränkung, die ich mir vorstellen tatsächlich erstellt eine separate UniqueConstraint???
In jedem Fall, wenn ich dieses heraus, es ist keine Beschwerde über die UniqueConstraint, aber es ist ein weiterer Fehler, der macht mich glauben, dass es verlassen werden muss, in.
org.hibernate.MappingException: Could not determine type for: com.mksoft.fbautomate.domain.Account, at table: Friend, for columns: [org.hibernate.mapping.Column(account)]
Irgendwelche Tipps wie ich das schaffen kann so eine gewünschte Einschränkung (d.h., dass jede Kombination von Konto und name nur einmal vorkommt???)
Danke!
Misha
- Hat @Peter die Lösung für Sie gearbeitet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung:
Erklärung:
Der name der Spalte für die @ManyToOne in der erzeugten Tabelle wird wahrscheinlich so etwas wie account_id statt Konto. Die @UniqueConstraint erwartet, dass die genauen Namen der Spalte, nicht der name, den Sie verwenden in Ihrer Klasse. Um sicherzustellen, dass es nur funktioniert, geben Sie in dieser Spalte einen bestimmten Namen mit @JoinColumn und stellen Sie sicher, dass der gleiche name verwendet wird, in Ihrem UniqueConstraint.