是否可以在JPA / Hibernate中覆盖表名称,以便为所有项目实体添加通用前缀?例如,能够通过“ JBPM5_”前缀为所有JBPM 5表添加前缀。
可接受答案的示例:
public class JBPM5NamingStrategy extends ImprovedNamingStrategy {
public String classToTableName(String className) {
return StringHelper.unqualify(className);
}
public String propertyToColumnName(String propertyName) {
return propertyName;
}
public String tableName(String tableName) {
return "JBPM5_" + tableName;
}
public String columnName(String columnName) {
return columnName;
}
public String propertyToTableName(String className, String propertyName) {
return "JBPM5_" + classToTableName(className) + '_'
+ propertyToColumnName(propertyName);
}
}
一次重命名所有表的一种方法是实现自己的namingStrategy(的实现org.hibernate.cfg.NamingStrategy
)。
使用的NamingStrategy在persistence.xml中由
<property name="hibernate.ejb.naming_strategy"
value="com.example.MyNamingStrategy" />
问题内容: 有人可以透视一下JPA和Hibernate之间的区别吗?还是将这些互补的概念一起使用? 问题答案: 大致来说,JPA是java社区的一个标准,这里是specs,它是由Hibernate家伙实现(并扩展)的(此处提供一些信息)。作为规范,您将不会直接使用JPA,而是使用JPA实现。 请注意,如果要使用hibernateJPA扩展,将破坏与其他JPA实现的兼容性(尽管有些人会说“为什么要使
问题内容: 创建一个新的数据库架构,并创建一个不存在的数据库架构,并更新现有的数据库架构。如果我想检查数据库模式是否存在,并根据将要创建的数据库模式来检查,该如何实现。目前,我的配置是: 和HibernateEMSDao.java: 这是工作。什么配置可以帮助我实现这一目标?就像是: 检查ID = 1的用户是否存在 如果没有创建架构 感谢致敬。 问题答案: 您可以禁用该选项,检查条件(可能使用普通
问题内容: 我写这篇文章,以了解是否有人知道该怎么做: 我想做这个插入: 加密是存储在我的数据库中的函数,也是我想在代码中插入的函数。实际上,当我想在数据库中插入某些内容时,我会使用: 但是我想进行“自定义”插入,因为我需要使用该功能。 我正在使用hibernate+注释: 但是必须从文件中读取密钥“ cdp”,因此该解决方案对我不起作用。 我想在代码上使用一种方法来执行SQL查询(INSERT查
问题内容: 我有一个客户端服务器应用程序,并且在我的服务器中,我正在使用hibernate模式进行数据库处理。现在,我的应用程序需要所有数据库表中的一个简单表,其中仅一个行包含一个字段(这是该行的键)。该表实际上仅包含一个全局编号(从1开始),我在用户每次执行某些操作时都会使用该编号,当他执行此操作时,我需要获取该值并在数据库中递增该值。(表应该只包含一行,并且始终只有一个值) 我正在使用以下代码
问题内容: 有一个结构。我想以这种方式链接这三个实体:公司应包含ID,公司名称和部门列表,每个部门都有一个工人列表,ID和部门名称。每个工人都有名字,身份证。 我试图与一对多和多对一建立联系,但未成功。 公司 部门 工人 我从开始: 它填充公司,但不填充其他表,也没有创建任何联接(映射)错误: 问题答案: 除了Glenn Lane的答案中提到的级联,您还需要了解双向关联是如何工作的。 它们有一个所
问题内容: 如果我有如下代码: 在开始和提交之间,正在读取的表是否被锁定,并且随后是否会在多用户环境中引起问题,在该环境中,当另一个用户调用上面的相同代码时会发生问题? 如果以上情况有问题,我们是否应始终尝试缩短交易时间?并为此提供便利,而不是在懒惰的关系上调用getter方法,这是否意味着最好使交易简短并为父母的子女手动查找? 问题答案: Hibernate不会做任何事情来显式锁定您从中读取的表