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

Dej*_*ell 4 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;
Run Code Online (Sandbox Code Playgroud)

有吸气剂和二传手.

但是我得到:

caused by: org.hibernate.AnnotationException: Unable to create unique key constraint (campaignContentId, campaignId, fieldTag) on table campaign_content: campaignContentId, campaignId, fieldTag not found
Run Code Online (Sandbox Code Playgroud)

怎么了?

JB *_*zet 7

列的名称campaign_content_id不是campaignContentId.当然,其他列也是如此.该columnNames属性需要一组...列名.不是Java字段或属性名称的数组.


小智 6

在我的情况下,此代码有效,一个物理表字段名称和一个实体对象成员字段名称。

@Table(uniqueConstraints={@UniqueConstraint(columnNames = {"account_id" , "measureDate"})})
Run Code Online (Sandbox Code Playgroud)

但是这段代码在相同的例外情况下根本不起作用。

@Table(uniqueConstraints={@UniqueConstraint(columnNames = {"account_id" , "measure_date"})})
Run Code Online (Sandbox Code Playgroud)

有人报告这个错误休眠。检查这个。 https://forum.hibernate.org/viewtopic.php?f=9&t=986581&view=next

我用

  • 弹簧靴
  • 弹簧数据
  • mysql

  • 我遇到了同样的问题。我注意到的是; 如果您从另一个实体扩展您的实体;对于继承的列名,hibernate 接受逻辑命名(如;createdAt),但对于非继承的列名,它接受列名在数据库中的显示方式(如;question_id)。 (2认同)