列的默认命名策略 - 是否可能? (JPA)

时间:2014-07-19 12:52:28

标签: java database hibernate jpa configuration

JPA新手在这里。这是我的问题:

假设我们有这样的实体:

@Entity
@Table(name="thingies")
public class Thingy implements Serializable {
    private Long thingyId;
    private String thingyName;
    private Integer thingyPrice;

    // Constructor, getters, setters
}

映射到这样的表:

create table thingies (
    thingy_id serial primary key,
    thingy_name text,
    thingy_price smallint
);

有没有办法让提供程序知道属性命名策略,而不是需要在每个getter上显式提供@Column注释?换句话说,我们可以自动将所有下划线名称映射到相应的camelcased名称而不使用@Column吗?

(我知道我可以引用姓名,这不是我上面问题的答案。)

2 个答案:

答案 0 :(得分:1)

您需要将以下属性添加到persistence.xml文件中:

<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>

所有camelcasedproperty名称将被映射到强调列名称。

答案 1 :(得分:0)

你应该使用@Column。

@Column(name="thingy_name")
private String thingyName;

Becouse'thingy_name'不等于'thingyName'。 JPA不知道你想要映射什么。但是在表中,thingyname和实体thingyName对于JPA是相同的。

使用注释@Column,不需要花费很多时间。但是你会得到一份明确的文件。