Hibernate连接表“无效的列名” [重复]
Posted
技术标签:
【中文标题】Hibernate连接表“无效的列名” [重复]【英文标题】:Hibernate join table "invalid column name" [duplicate] 【发布时间】:2016-03-09 00:52:40 【问题描述】:我有两张桌子。 CategoryMaster和PotentialProject
PotentialProject [potentialProjectID, typeOfProject]
CategoryMaster [CategoryID, CategoryName]
我想加入 typeOfProject 和 categoryID。
@Entity
@Table(name="CategoryMaster")
public class CategoryMaster
@Id
@Column(name="CategoryID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer CategoryID;
private String CategoryName;
@OneToOne
@JoinColumn(name="typeOfProject")
private PotentialProject potentialProject;
//getter
//setter
@Entity
@Table(name="PotentialProject")
public class PotentialProject
@Id
@Column(name="PotentialProjectID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer potentialProjectID;
private int typeOfProject;
@OneToOne(mappedBy="potentialProject")
private CategoryMaster categoryMaster;
//getter
//setter
hibernate 中的错误信息是无效的列名 typeOfProject。请给我一些建议。谢谢。
【问题讨论】:
您能完整发布您的实体吗? 是的。请查看更新。 检查您的数据库。 DB 中的列名很可能与您映射的内容不匹配。而且,为什么要使用这种命名不一致的数据库方案?@JoinColumn
和 mappedBy
不正确,请参阅链接副本。您还缺少一些@Column
,例如CategoryName
@RC 他不需要@Column
和@JoinColumn
和@OneToOne
【参考方案1】:
看来是对的
@OneToOne(mappedBy="potentialProject")
private CategoryMaster categoryMaster;
但这是不正确的
@OneToOne
@JoinColumn(name="typeOfProject")
private PotentialProject potentialProject;
name
是外键列的名称!所以你的代码应该是这样的
@OneToOne
@JoinColumn(name="fk_potential_project")
private PotentialProject potentialProject;
【讨论】:
@RC 不要急于和 -1 人在一起 ;) 多想!【参考方案2】:谢谢兄弟@RC 和@v.ladynev。我有一个解决方案。我将双向映射更改为单向映射。所以
@OneToOne
@PrimaryKeyJoinColumn
private CategoryMaster categoryMaster;
在 CategoryMaster 中无事可做。
谢谢兄弟们。
【讨论】:
不客气。但目前尚不清楚我的解决方案。它是正确的还是不正确的。 :)以上是关于Hibernate连接表“无效的列名” [重复]的主要内容,如果未能解决你的问题,请参考以下文章