我有以下实体:
@Entity
@Table(name = "campaign_content", uniqueConstraints = @UniqueConstraint(columnNames = { "campaignContentId", "campaignId", "fieldTag" }))
public class CampaignContent implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "campaign_content_id")
private Integer campaignContentId;
@Column(name = "field_content")
private String fieldContent;
@Column(name = "campaign_id")
private Integer campaignId;
@Column(name = "field_tag")
private String fieldTag;
使用getter和setter。
但是我得到了:
caused by: org.hibernate.AnnotationException: Unable to create unique key constraint (campaignContentId, campaignId, fieldTag) on table campaign_content: campaignContentId, campaignId, fieldTag not found
有什么问题?
答案 0 :(得分:7)
列的名称为campaign_content_id
,而不是campaignContentId
。当然,其他列也是如此。 columnNames
属性需要一组...列名。不是Java字段或属性名称的数组。
答案 1 :(得分:3)
在我的例子中,这段代码有效,一个物理表字段名称和一个实体对象成员字段名称。
@Table(uniqueConstraints={@UniqueConstraint(columnNames = {"account_id" , "measureDate"})})
但是这段代码根本不起作用。
@Table(uniqueConstraints={@UniqueConstraint(columnNames = {"account_id" , "measure_date"})})
有人报告了这个bug来休眠。检查一下。 https://forum.hibernate.org/viewtopic.php?f=9&t=986581&view=next
我用
答案 2 :(得分:0)
我的问题解决了 您的表定义必须如下所示 @Table(name =“campaign_content”,uniqueConstraints = @UniqueConstraint(columnNames = {“campaign_content_id”,“campaign_id”,“field_tag”}))
答案 3 :(得分:0)
对于使用Kotlin时遇到此错误的任何人,我的问题是由在@Column
上使用@get:Column
而不是var
引起的。 h!