使用@ManyToOne时的列名

时间:2013-02-01 13:53:36

标签: java hibernate

当我使用@OneToMany / @ManyToOne时,Hibernate假定列名为'task_id'。 是否有一个Annotiation告诉Hibernate列名是例如'XXX'?

表架构:

Project      Task
-------      ----
id           id
text         text
             project

代码:

class Project {
    ...
    @OneToMany(mappedBy = "task")
    private List<Task> tasks;
}

class Task {
    ...
    @ManyToOne
    private Project project;
}

由于

2 个答案:

答案 0 :(得分:4)

是的,它被称为...... @JoinColumn。使用原样:

@JoinColumn(name = "xxx")

您可以在关系的所有方面使用它(Task)。

答案 1 :(得分:2)

@ManyToOne
@JoinColumn(name="xxx")
private Project project;

从Jpa 2.0规范,JoinColumn接口

的声明
@Target({METHOD, FIELD}) @Retention(RUNTIME)
  public @interface JoinColumn {
  String name() default "";
  String referencedColumnName() default "";
  boolean unique() default false;
  boolean nullable() default true;
  boolean insertable() default true;
  boolean updatable() default true;
  String columnDefinition() default "";
  String table() default "";
}