问题标签 [naming-strategy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
655 浏览

hibernate - 使用 Spring Boot 2 JPA 的 DefaultComponentSafeNamingStrategy

我正在将旧版 Spring 4.2.4 / Hibernate 4.3 应用程序移植到 Spring Boot 2.0.2。此应用程序使用 Hibernate 的 DefaultComponentSafeNamingStrategy。

Spring Boot 2 / Hibernate 5.2 更改了命名策略。有很多文档解释了新的物理和隐式命名策略,但我还没有找到任何关于哪种命名策略可以替代旧的 DefaultComponentSafeNamingStrategy 的信息。

很明显,所有表、列等名称都像往常一样生成。如果这不可能,我希望看到一些接近的策略文档,以及它们与过去可用的策略有何不同。到目前为止没有找到任何运气......

从长远来看,这个应用程序的数据库由近 600 个表组成,因此遍历每个表和列的映射需要很长时间 :(

是否有任何有用的文档可用于从旧迁移策略迁移?我应该求助于创建自己的策略,还是有一种接近并可以扩展的策略?

0 投票
1 回答
1384 浏览

php - 表名和列名的命名策略(Doctrine ORM)

是否可以有一个命名策略来处理 Doctrine ORM 中的映射表和列名?

现在所有名称都是通过实体类中的注释指定的,例如

表名和列名都是snake_case,而类名和属性名都是camelCase.

我尝试在实体类中删除表名和列名声明,并通过配置提供了命名策略,尝试通过以下两种方式进行设置。

尝试检索实体时,会引发错误。

0 投票
1 回答
1153 浏览

json - 防止 JMS 序列化程序将 CamelCase 转换为 UnderscoreCase

我用 symfony 4.2 和这些包(FOSRestBundle,JMS Serializer Bundle)启动了一个 API Rest。我有一个 Angular 应用程序,它发送许多请求,其主体具有像 firstName 这样的属性,但它与我的 User 属性不匹配,而它的属性名称也是 firstName。

此外,json 响应已将所有 camelCase 属性更改为下划线 Case。

我已经尝试了很多东西。没有任何效果。对不起我的英语,我希望你能理解我。

实体 :

控制器 :

jms_serializer.yaml :

fos_rest.yaml:

这是我的 json 请求的正文:

这是回应:

0 投票
1 回答
364 浏览

java - SQLite的Spring boot2 JPA命名策略

我想用 CrudRepository 实现 spring boot 2 应用程序。我无法弄清楚我的应用程序中的命名策略发生了什么。当我调用存储库中的方法(例如 findAll())时,它会转换数据库中表的名称,并且查询崩溃。当然,我尝试了类似问题的解决方案:ImprovedNamingStrategy no longer working in Hibernate 5 Hibernate Naming strategy changed table names

Spring boot 完全忽略 application.properties 文件中的命名策略属性(其他属性效果很好)

在 spring boot 2.1.8 的源代码中,我找到了策略道具的名称并将它们复制到属性中:

物理和隐式策略实现的完全限定类名可以通过分别设置spring.jpa.hibernate.naming.physical-strategyspring.jpa.hibernate.naming.implicit-strategy属性来配置。或者,如果ImplicitNamingStrategyPhysicalNamingStrategybean 在应用程序上下文中可用,Hibernate 将自动配置为使用它们。 但它不起作用。

谢谢你。

应用程序属性

pom.xml

NewsBlockRepo.java

新闻块.java

我的 PhysicalNamingStrategyImpl

甚至 ImplicitNamingStrategyImpl

最终控制器从存储库调用方法

错误:

0 投票
1 回答
179 浏览

postgresql - 带有下划线的 JPA 列 - CustomPhysicalNamingStrategy 正在抛出 NullPointer exeption

经过一些研究,参考这些帖子我尝试设置自定义命名策略

休眠命名策略

下划线不正确的 JPA 列

这是我的自定义命名策略

LocalContainerEntityManagerFactoryBean :

自定义属性()

但是当启动 springboot 应用程序时,它会抛出以下异常:

精确到 CustomPhysicalNamingStrategy 中的行

我错过了一些配置,还是我做错了?

使用弹簧靴 - 2.2.4.RELEASE

0 投票
1 回答
833 浏览

spring-boot - 使用 SpringPhysicalNamingStrategy 的 Spring Boot 多数据源

需要配置了多个数据源的 Spring Boot 应用程序。多数据源配置使用单独datasource的 ,entityManagertransactionManager.

此外,休眠命名配置正在使用具有以下配置的单个数据源。 spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy

上述配置可以通过 JPA 属性提供给 entityManager。但无法在 SpringPhysicalNamingStrategy 中添加动态表名(来自 application.properties)。

0 投票
1 回答
35 浏览

java - 注释快捷方式(Hibernate 的@Id、@GeneratedValue、@SequenceGenerator)

需要简化代码。在我们公司,我们有关于如何为 DB 对象创建名称的模式(参见下面的列表),这些模式适用于所有类/表,这会导致每个实体类中出现大量重复代码(参见代码示例)。我能够使用自定义命名策略简化表名生成。但是,使用命名策略,ID 列仅从其属性名称生成,但我还需要一个类/表名称作为它的一部分。同样适用于 valueGenerator。

是否有任何选项如何仅使用自定义命名策略来应用这些规则?我还可以想象使用自定义注释 eq @AcmeId 的解决方案,它从配置中获取项目前缀并“扩展自身”到这四个注释,如果可能的话(你能指出一些例子吗?)。

模式

  1. 项目中包含的表具有项目名称作为前缀,因此项目 ABC 中 MyClass 实体的表具有名称 ABC_MYCLASS)
  2. ID 列名由表名和_ID 组成,eq ABC_MYCLASS_ID
  3. 生成 ID 列值的序列,与 ID 列同名,后跟 _SEQ 后缀,eq ABC_MYCLASS_ID_SEQ
0 投票
1 回答
26 浏览

java - PhysicalNamingStrategyStandardImpl JPA 休眠命名适用于开发/本地,但不适用于测试

我的表名是驼峰式的,休眠(v5)命名是 PhysicalNamingStrategyStandardImpl,它在使用 @SpringBootApplication 运行应用程序时有效,但是当它用于测试和使用 @DataJpaTest 时,它将驼峰式名称全部变为大写,因此测试不会得到执行。

我还确保我有两个单独的 application.yml 一个用于开发,一个用于测试,一个用于测试工作

这就是我声明适用于 dev/local 的命名的方式:

表名声明如下:@Table(name = "ClinicalUser") 得到以下错误:

我想再次提到,这在开发/本地环境中使用时有效。

我检查了所有其他相关问题,他们要么无法连接到他们的测试 application.yml,要么他们有不同命名的不同问题。

0 投票
0 回答
4 浏览

queue - 如何使用for循环创建名称增加的堆栈节点对象

所以我需要创建一个与每个索引关联的堆栈的队列。现在我拥有的程序将使用用户的特定命令(将做一些事情),然后这些命令修改队列的大小和队列每个索引处每个堆栈的大小。Stack 和 Queue 都是基于节点的。

本质上,我想要一个循环在新队列的索引处创建一个新堆栈(当用户入队时),并能够在该队列中修改该堆栈。我是编码新手,所以如果有更好的方法,我很感激帮助,但这段代码还有更多内容,我现在只需要这方面的帮助。

假设队列大小为 4

这有这样的效果

现在 for 循环不起作用,因为它是一个字符串并且不能与 Stack 一起使用。我需要找到一种方法来完成这项工作或另一种可以实现类似效果的方法。我已经在网上搜索了一个星期,但找不到答案。谢谢!