【问题标题】:Unable to build Hibernate SessionFactory insert update false无法构建 Hibernate SessionFactory 插入更新 false
【发布时间】:2017-10-10 15:05:12
【问题描述】:

表客户端 名称="客户"

@OneToMany(mappedBy="clientObj", fetch=FetchType.LAZY)
private List<BookedRoom> bookedRooms;

和桌子预定房间

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(unique=true, nullable=false)
private BigInteger id;

@Column(name="accommodation")
private BigInteger accommodation;

@Column(name="account")
private BigInteger account;

@Column(length=40)
private String clients;

@Column(name="clients_id", length=40)
private String clientsId;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="clients", nullable=false)
@JsonBackReference 
private Client clientObj;

@Column(name="rooms_no")
private byte roomsNo;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="room", nullable=false)
@JsonBackReference 
private AccommodationRoom accommodationRoom;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="bed_preference")
@JsonBackReference 
private BedPreference bedPreferenceBean;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="booking", nullable=false)
@JsonBackReference 
private Booking bookingBean;

还有错误:

原因:org.hibernate.MappingException:映射中的重复列 对于实体:ba.go2balkan.pojo.BookedRoom 列:客户(应该是 映射为 insert="false" update="false") [java] 在 org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:709) [java] 在 org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:731) [java] 在 org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:753) [java] 在 org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:506) [java] 在 org.hibernate.mapping.RootClass.validate(RootClass.java:270) [java] 在 org.hibernate.cfg.Configuration.validate(Configuration.java:1358) [java] 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849) [java] 在 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) [java] ... 34 更多

而且不要告诉我插入 (insertable="false", updateble="false")。因为当我插入它时,我无法从数据库或其他任何东西中读取数据。这不是解决方案。

【问题讨论】:

  • 它说重复的列是指用相同的名称映射的两列。你能检查一下吗
  • 如果你真的想要两个字段映射同一个列,那么你必须在两个映射之一上使用可插入的可更新的 false 或者休眠不能告诉使用哪一个......但是我们可以再次除非您发布整个实体,否则不会告诉您
  • 我编辑了帖子。我复制了整个bookedRoom.java 文件。

标签: java hibernate


【解决方案1】:

你有

@Column(length=40)
private String clients;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="clients", nullable=false)
@JsonBackReference 
private Client clientObj;

试图映射相同的 db 列(如果您不指定列名,则休眠将使用字段名进行列映射)...

如果它实际上是另一列,要么给第一个不同的名称,在非关联映射 String clients 上使用 insertable=false, updatable= false 或完全删除那个无意义的字段

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 2015-05-19
    • 2017-04-10
    • 2018-07-25
    • 1970-01-01
    • 2018-06-04
    • 2019-03-21
    • 2014-08-24
    • 2018-08-20
    相关资源
    最近更新 更多