无法创建未找到的唯一键约束

时间:2011-11-07 19:44:47

标签: java hibernate

我有以下实体:

@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

有什么问题?

4 个答案:

答案 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

我用

  • spring boot
  • spring data
  • MySQL的

答案 2 :(得分:0)

我的问题解决了 您的表定义必须如下所示 @Table(name =“campaign_content”,uniqueConstraints = @UniqueConstraint(columnNames = {“campaign_content_id”,“campaign_id”,“field_tag”}))

答案 3 :(得分:0)

对于使用Kotlin时遇到此错误的任何人,我的问题是由在@Column上使用@get:Column而不是var引起的。 h!