告诉hibernate使用与sql语句的类字段相同的大小写
如何配置persistence.xml,使我不需要将所有这些@Column注释放入实体中,以便entitymanager使用与fieldname完全相同的大小写。默认情况下,当我查看日志文件时,所有字段名都是大写的告诉hibernate使用与sql语句的类字段相同的大小写,hibernate,jpa,glassfish-3,Hibernate,Jpa,Glassfish 3,如何配置persistence.xml,使我不需要将所有这些@Column注释放入实体中,以便entitymanager使用与fieldname完全相同的大小写。默认情况下,当我查看日志文件时,所有字段名都是大写的 @Entity @Table(name="INDICATE", schema="inet") public class Indicate implements Serializable { private static final long serialVe
@Entity
@Table(name="INDICATE", schema="inet")
public class Indicate implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="indID", insertable = false, nullable=false, unique=true) private Long indID;
@Column(name="prditmNO") private String prditmNO;
@Column(name="indREASON") private Integer indREASON;
@Column(name="indIP") private String indTCPIP;
谢谢。您可以在hibernate中实现自己的
org.hibernate.cfg.NamingStrategy
。最简单的方法是重写org.hibernate.cfg.ImprovedNamingStrategy,并实现所有影响表和列命名规则的方法
public class CaseSensitiveNamingStrategy extends ImprovedNamingStrategy {
@Override
public String tableName(String name){
return name;
}
@Override
public String columnName(String name){
return name;
}
}
请记住,可能有更多的方法需要重写。有关此类的详细信息,请参阅JavaDocs
记住在Hibernate中注册自定义NamingStrategy
实现。这可以在创建会话工厂时通过编程实现
Configuration config = new AnnotationConfiguration().configure();
config.setNamingStrategy(new CaseSensitiveNamingStrategy());
SessionFactory sessionFactory = config.buildSessionFactory();
或者,您可以使用声明式方式注册自定义NamingStrategy
将属性hibernate.ejb.naming_策略
设置为NamingStrategy
实现的完整限定类名,如下所示:
<property name="hibernate.ejb.naming_strategy"
value="stackoverflow.CaseSensitiveNamingStrategy"/>
您可以在hibernate中为该需求实现自己的org.hibernate.cfg.NamingStrategy
。最简单的方法是重写org.hibernate.cfg.ImprovedNamingStrategy
,并实现所有影响表和列命名规则的方法
public class CaseSensitiveNamingStrategy extends ImprovedNamingStrategy {
@Override
public String tableName(String name){
return name;
}
@Override
public String columnName(String name){
return name;
}
}
请记住,可能有更多的方法需要重写。有关此类的详细信息,请参阅JavaDocs
记住在Hibernate中注册自定义NamingStrategy
实现。这可以在创建会话工厂时通过编程实现
Configuration config = new AnnotationConfiguration().configure();
config.setNamingStrategy(new CaseSensitiveNamingStrategy());
SessionFactory sessionFactory = config.buildSessionFactory();
或者,您可以使用声明式方式注册自定义NamingStrategy
将属性hibernate.ejb.naming_策略
设置为NamingStrategy
实现的完整限定类名,如下所示:
<property name="hibernate.ejb.naming_strategy"
value="stackoverflow.CaseSensitiveNamingStrategy"/>
如果您使用的是JPA 2.0,规范会说:
通过在持久化单元中指定
元素,可以指定将用于持久化单元的所有数据库标识符视为分隔标识符
持久化单元默认为对象/关系xml映射文件的元素。如果
元素已指定,无法覆盖它。如果您使用的是JPA 2.0,规范会说明:
通过在持久化单元中指定
元素,可以指定将用于持久化单元的所有数据库标识符视为分隔标识符
持久化单元默认为对象/关系xml映射文件的元素。如果
元素被指定,它不能被重写。我刚刚发现Glassfish没有使用hibernate。它默认使用toplink。在那里我找到了一个记事本。这是相同的程序吗?我刚刚发现Glassfish没有使用hibernate。它默认使用toplink。在那里我找到了一个记事本。那是同样的程序吗?