Hibernate连接表"无效的列名"

时间:2015-12-04 06:45:28

标签: java sql hibernate

我有两张桌子。 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。请给我一些建议。谢谢。

2 个答案:

答案 0 :(得分:0)

看起来这是正确的

@OneToOne(mappedBy="potentialProject")
private CategoryMaster categoryMaster;

但这不正确

@OneToOne
@JoinColumn(name="typeOfProject")
private PotentialProject potentialProject;

name是外键列的名称!所以你的代码应该是这样的

@OneToOne
@JoinColumn(name="fk_potential_project")
private PotentialProject potentialProject;

P.S。为什么你认为我们应该浪费时间来预测你的持久化类和堆栈跟踪?为什么你不浪费时间复制粘贴所有这些东西?

答案 1 :(得分:0)

谢谢兄弟@RC& @ v.ladynev。我有一个解决方案。我将双向映射更改为单向映射。所以

@OneToOne
@PrimaryKeyJoinColumn  
private CategoryMaster categoryMaster;

在CategoryMaster中没什么可做的。

谢谢兄弟们。