使用以下代码:
@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
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
org.hibernate.AnnotationException: Unable to create unique key constraint (account, name) on table Friend: account not found
Run Code Online (Sandbox Code Playgroud)
这似乎与@ManyToOne约束有关,我想这实际上创建了一个单独的UniqueConstraint ???
在任何情况下,如果我把它拿出来,没有关于UniqueConstraint的抱怨,但是还有另一个错误让我相信它必须留在.
org.hibernate.MappingException: Could not determine type for: com.mksoft.fbautomate.domain.Account, at table: Friend, for columns: [org.hibernate.mapping.Column(account)]
Run Code Online (Sandbox Code Playgroud)
任何提示如何创建这样一个所需的约束(即,帐户和名称的每个组合只出现一次???)
谢谢!
米莎
小智 12
解决方案:
@Entity
@Table(uniqueConstraints=[@UniqueConstraint(columnNames=["myaccountcolum","name"])])
class Friend {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
public Long id
@ManyToOne
@JoinColumn(name="myaccountcolum")
public Account account
public String href
public String name
}
Run Code Online (Sandbox Code Playgroud)
说明:生成的表中@ManyToOne的列名可能类似于account_id而不是account.@UniqueConstraint需要确切的列名,而不是您在类中使用的名称.要确保它正常工作,请使用@JoinColumn为此列指定一个特定名称,并确保在UniqueConstraint中使用相同的名称.
| 归档时间: |
|
| 查看次数: |
5227 次 |
| 最近记录: |