小编Iso*_*Iso的帖子

适用于AuditingEntityListener的Spring JPA Hibernate CET时区

我没有为我的JPA应用程序设置CET时区,该应用程序使用AuditingEntityListener来增加创建/最后修改的日期。

我已经尝试过的事情:

在我的application.properties(两种组合)中:

spring.jpa.properties.hibernate.jdbc.time_zone=UTC+1
spring.jpa.properties.hibernate.jdbc.time_zone=CET
Run Code Online (Sandbox Code Playgroud)

为我的JDBC连接添加了时区(两种组合)

spring.datasource.url=jdbc:mysql://host:3306/db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC+1
spring.datasource.url=jdbc:mysql://host:3306/db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CET
Run Code Online (Sandbox Code Playgroud)

添加了后构建(应用程序级别)

@PostConstruct
void started() {
    TimeZone.setDefault(TimeZone.getTimeZone("UTC+1"));
}
Run Code Online (Sandbox Code Playgroud)

还尝试使用以下方法在数据库级别设置时区:

SET time_zone='+01:00';
Run Code Online (Sandbox Code Playgroud)

无论如何都没有成功,我是否缺少某些东西?

使用@createdDate如下:

编辑

@Data
@Builder
@Entity
@EntityListeners(AuditingEntityListener.class)
@NoArgsConstructor
@AllArgsConstructor
public class OrderHistoryRecord {
    @Id
    @GeneratedValue
    @JsonIgnore
    private Long id;

    @NotNull
    @ManyToOne(fetch = FetchType.LAZY, targetEntity = Order.class)
    @JoinColumn(name = "order_id", updatable = false)
    @JsonIgnore
    private Order order;

    @CreatedDate
    private Date date;

    @Enumerated(EnumType.STRING)
    private PaymentStatus paymentStatus;

    @Enumerated(EnumType.STRING)
    private ShipmentStatus shipmentStatus;

    @Enumerated(EnumType.STRING)
    private OrderHistoryRecordType type;
}
Run Code Online (Sandbox Code Playgroud)

java spring jdbc spring-data-jpa spring-boot

7
推荐指数
1
解决办法
814
查看次数

CORS 在 dockerized Django REST + Angular 项目中被阻止

我今天决定对现有的 Django REST + Angular 应用程序进行 docker 化。网站显示正常,但 CORS 请求被阻止。

从源“ http://localhost: 3000”访问位于“ http://localhost: 8000/branches/1”的 XMLHttpRequest已被 CORS 策略阻止:“Access-Control-Allow-Origin”标头不存在请求的资源。

Angular 应用程序使用 Nginx 进行 Docker 化。我正在使用教程(下面列出了 docker + compose 文件)。

奇怪的是,我以前也遇到过这个问题,并通过使用djang-cors-headers包解决了它。随着CORS_ORIGIN_ALLOW_ALL = True,这似乎不再解决问题。

这是否与应用程序现在在容器中运行有关?我为项目提供 dockerfiles 以及下面的 docker-compose 文件。但不确定它们是否相关。

Angular 项目的 Dockerfile:

FROM tiangolo/node-frontend:10 as build-stage
WORKDIR /app

COPY package*.json /app/
RUN npm install

COPY ./ /app/
ARG configuration=production
RUN npm run build -- --output-path=./dist/out --configuration $configuration

# Stage 1, based on Nginx, to have only the …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework docker django-cors-headers angular

5
推荐指数
1
解决办法
6650
查看次数

Django REST:通过 UUID 查找序列化程序

我正在 Django REST 中创建这个简单的购物 API。

在内部,我将 ID 用于外键约束,而guuids被带到外部世界。

对于结帐过程,用户提供他愿意购买的商品 ID 列表。因此,POST 数据中的对象如下所示:

{
  assets: [
    {
       'product': 'd9d5044d-2284-4d15-aa76-2eee3675035b',
       'amount': 4
    },
    ....
  ]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下票据/资产模型:

# Ticket
class Ticket(models.Model):
    uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='tickets', on_delete=models.CASCADE)


# Assets
class Asset(models.Model):
    ticket = models.ForeignKey(Ticket, related_name='assets', on_delete=models.CASCADE)
    stock_item = models.ForeignKey(Stock, related_name='stock_item', on_delete=models.SET_NULL, null=True)
    amount = models.IntegerField(validators=[MinValueValidator(0)])
Run Code Online (Sandbox Code Playgroud)

序列化程序如下所示:

# Asset serializer
class AssetSerializer(serializers.ModelSerializer):

    class Meta:
        model = Asset
        fields = ('stock_item', 'amount')


# Ticket serializer
class TicketSerializer(WritableNestedModelSerializer):
    owner …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-rest-framework

4
推荐指数
1
解决办法
2462
查看次数