Java “休眠联接表”;无效的列名";

Java “休眠联接表”;无效的列名";,java,sql,hibernate,Java,Sql,Hibernate,我有两张桌子。CategoryMaster和PotentialProject PotentialProject [potentialProjectID, typeOfProject] CategoryMaster [CategoryID, CategoryName] 我想加入项目类型和类别ID @Entity @Table(name="CategoryMaster") public class CategoryMaster { @Id @Column(name="Categ

我有两张桌子。CategoryMaster和PotentialProject

PotentialProject [potentialProjectID, typeOfProject]

CategoryMaster  [CategoryID, CategoryName]
我想加入项目类型和类别ID

@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。请给我一些建议。谢谢。

看起来这是正确的

@OneToOne(mappedBy="potentialProject")
private CategoryMaster categoryMaster;
但这是不对的

@OneToOne
@JoinColumn(name="typeOfProject")
private PotentialProject potentialProject;
name
是外键列的名称!所以你的代码应该是这样的

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

谢谢兄弟@RC&@v.ladynev。我找到了解决办法。我将双向映射更改为单向映射。所以

@OneToOne
@PrimaryKeyJoinColumn  
private CategoryMaster categoryMaster;
在CategoryMaster中无需执行任何操作


谢谢兄弟们。

你们能完整地发布你们的实体吗?是的。请查看更新的数据库。检查数据库。DB中的列名很可能与映射的列名不匹配。而且,您为什么希望DB scheme具有这种不一致的命名方式呢?
@JoinColumn
mappedBy
不正确,请参阅链接副本。您还缺少一些
@Column
,例如
CategoryName
@RC他不需要
@Column
@JoinColumn
@OneToOne
@RC与-1人一起匆忙;)多想想!不客气。但我的解决方案还不清楚。这是正确的还是错误的。:)