小编Mar*_*ney的帖子

我可以在同一个Maven项目的源文件中动态生成和引用类吗?

在Maven Build中,我使用字节代码生成库(Byte Buddy)动态生成一些Java类型.当然,这些类文件没有相应的源文件.这种方式只能生成几个类.该项目的大部分代码都是Java源代码.理想情况下,Java源代码将以静态方式引用生成的类型,而不是使用反射或运行时代码生成,这意味着类需要位于javac的编译类路径上.我是否可以在同一个Maven项目的编译类路径上获取生成的类,即没有单独的Maven项目和工件来保存包含源代码的Maven项目引用的生成的字节代码?

更新:我已经尝试将生成的类直接放入target/classesie project.build.outputDirectory,在Maven Build Lifecycle的早期,但它似乎不在类路径上.Maven编译器插件或 IDE 无法解析生成的类型.我还尝试使用Build Helper Maven插件在target包含生成的类的情况下添加一个额外的资源目录,然后自动将其复制到该目录中target/classes.该配置表现出相同的问题.

更新:我在GitHub上创建了一个完整的公共回购:https://github.com/mches/so-42376851

这是项目的Maven POM,我希望有静态类引用字节码增强类:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>demo</groupId>
        <artifactId>demo</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>demo-enhanced</artifactId>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>demo</groupId>
                                    <artifactId>demo-original</artifactId>
                                    <version>${project.version}</version>
                                    <overWrite>true</overWrite>
                                    <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                                    <includes>**/*.class</includes>
                                    <excludes>META-INF/</excludes>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>net.bytebuddy</groupId>
                <artifactId>byte-buddy-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>transform</goal>
                        </goals>
                        <configuration> …
Run Code Online (Sandbox Code Playgroud)

java bytecode intellij-idea maven byte-buddy

14
推荐指数
1
解决办法
1616
查看次数

sys.database_permissions 何时会包含状态 = 'R' 的行?

所述用于MSDN文档sys.database_permissions说,状态栏可以是“G”,“d”,“R”,或“W”。'R' 值有一个 'REVOKE' 的描述,这听起来像是具有该值的行对应于已撤销的权限。然而,尽我可以告诉的文档的REVOKE,撤销权限完全删除它,所以我希望这只是从删除行sys.database_permissions。这就是我测试授予然后撤销许可时发生的情况;在GRANT该权限显示在该视图中之后,以及在REVOKE它消失之后。

我的问题:在什么情况下这个视图会包含状态设置为“R”的行?我问这个是因为我不确定在代码中检查这个视图时是否需要处理“R”行。

我可以想到一些可能发生这种情况的潜在场景,但还没有找到任何确认:

  • 如果您授予了一些全面的权限,然后撤销了全面权限所隐含的更细化的权限(细化权限将显示为“R”),则可能会出现“R”行。到目前为止,我还没有找到任何此类权限。
  • 'R' 行在 SQL 处理REVOKE命令时可能会非常短暂地出现,然后整行消失。我没有观察到这一点,但大概只有一个很小的时间窗口才会出现。

sql sql-server permissions database-permissions

5
推荐指数
2
解决办法
581
查看次数

MS SQL批量插入

我需要2 GB CSV在我的MS SQL数据库中插入一个大文件.其中的大多数行不需要插入.在进行批量插入时,我没有找到任何可以过滤行的内容.我正在使用MS SQL批量插入命令来执行此操作.是否有任何选项可以过滤mySQL/MSSQL/Oracle批量插入上的行?

BULK INSERT payroll.t_allowance
   FROM 'f:\orders\lineitem.csv'
   WITH 
      (
         FIELDTERMINATOR =' |',
         ROWTERMINATOR =' |\n'
      );
Run Code Online (Sandbox Code Playgroud)

sql-server bulkinsert bulk-load

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

BCP和ó的字符编码问题

我有一个需要去波兰的文件.在我的数据中,我有一个ó.当我将数据输出到表格时ó,该字段仍然存在NVARCHAR.当我从表中剪切并粘贴到Excel或Notepad ++中时,ó保留

当我使用BCP实用程序导出数据时,如果我在Excel或Notepad ++中打开生成的文本文件,则更ó改为a ¢.如果我改变编码有时候角色变成了?.

我尝试过以下命令行开关,一次一个. -n -N -w

sql-server unicode bcp character-encoding

3
推荐指数
1
解决办法
5857
查看次数

使用 Liquibase 上下文有条件地激活/停用更改集

我们有变更集一:

--changeset change_one runOnChange:true
Run Code Online (Sandbox Code Playgroud)

和变更集二:

--changeset change_two runOnChange:true context:kansas
Run Code Online (Sandbox Code Playgroud)

change_one 适用于我们的所有安装,但change_two 仅适用于我们的“堪萨斯”安装。我们希望确保每当change_one发生更改时,change_two都会被执行——我们该如何做到这一点?

change_one 具有 runOnChange:true 因此只要发生更改就会运行。但是我们如何确保change_two在change_one执行时运行——但仅当我们传递context:kansas时?

liquibase

2
推荐指数
1
解决办法
3199
查看次数

Java LocalDateTime和db之间的正确映射

我有一个spring-boot 1.2.1应用程序,使用Liquibase来管理我的数据库.我也使用Spring-data-jpa和hibernate.我有一张桌子:

<createTable tableName="ADDRESS">
    <column name="address_id" type="bigint" autoIncrement="true">
        <constraints primaryKey="true" nullable="false"/>
    </column>
    <column name="address_line1" type="varchar(500)"/>
    <column name="address_line2" type="varchar(500)"/>
    <column name="address_line3" type="varchar(500)"/>
    <column name="city" type="varchar(500)"/>
    <column name="state" type="varchar(50)"/>
    <column name="zip" type="varchar(50)"/>
    <column name="status" type="varchar(100)"/>
    <column name="address_type" type="varchar(100)"/>
    <column name="begin_date_time" type="DATETIME"/>
    <column name="end_date_time" type="DATETIME"/>
</createTable>
Run Code Online (Sandbox Code Playgroud)

和一个实体:

@Entity
@Table(name = "ADDRESS")
public class Address {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long addressId;
    private String addressLine1;
    private String addressLine2;
    private String addressLine3;
    private String city;
    private String state;
    private String zip;

    @Enumerated(EnumType.STRING)
    private Status …
Run Code Online (Sandbox Code Playgroud)

java postgresql spring jpa liquibase

2
推荐指数
1
解决办法
7098
查看次数