小编sed*_*ran的帖子

将对象转换为通用类型以进行返回

有没有办法强制转换对象的方法值?我试过这种方式,但它在"instanceof"部分中给出了一个编译时异常:

public static <T> T convertInstanceOfObject(Object o) {
    if (o instanceof T) {
        return (T) o;
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我也试过这个,但它给出了一个运行时异常,ClassCastException:

public static <T> T convertInstanceOfObject(Object o) {
    try {
        T rv = (T)o;
        return rv;
    } catch(java.lang.ClassCastException e) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能轻松地做到这一点:

String s = convertInstanceOfObject("string");
System.out.println(s); // should print "string"
Integer i = convertInstanceOfObject(4);
System.out.println(i); // should print "4"
String k = convertInstanceOfObject(345435.34);
System.out.println(k); // should print "null"
Run Code Online (Sandbox Code Playgroud)

编辑:我写了正确答案的工作副本:

public static <T> T …
Run Code Online (Sandbox Code Playgroud)

java generics casting

124
推荐指数
3
解决办法
17万
查看次数

具有注释的Hibernate字符串主键

我正在尝试创建一个带有Annotations的Privilege类,其主键是一个String.我会在插入时手动分配它们.因此,不需要hibernate为它生成值.我正在尝试这样做:

@Id
@GeneratedValue(generator = "assigned")
@Column(name = "ROLE_NAME", nullable = false)
private String roleName;
Run Code Online (Sandbox Code Playgroud)

但它引发了异常:

Caused by: org.hibernate.AnnotationException: Unknown Id.generator: assigned
Run Code Online (Sandbox Code Playgroud)

如何配置String带注释的主键?

java annotations hibernate primary-key

7
推荐指数
2
解决办法
3万
查看次数

带有一个代理键和两个唯一键的BCNF

我想了解BCNF是什么,我有这样的关系:

学生(id,ssn,电子邮件,姓名,姓氏)

哪里

  • id是主要代理键,不具有null和自动增量属性,
  • ssn是一个非null属性的唯一键,并且
  • 电子邮件也是一个非空的属性的唯一键.

有没有违反BCNF的事情,如果有的话,我怎样才能通过更好的设计克服这种情况?

编辑

我正在尝试编写我的功能依赖,但如果我错了请纠正我.

有三个属性决定了其他属性,所以令人困惑的是ssn和email都存在于方程的左侧和右侧.似乎这种关系不是在bcnf但是一定有什么问题:)

id -> (ssn, email, name, surname)
ssn -> (id, email, name, surname)
email -> (id, ssn, name, surname)
Run Code Online (Sandbox Code Playgroud)

database-design database-normalization

6
推荐指数
1
解决办法
1352
查看次数

如何在反应式 mongo 驱动程序中模拟 FindPublisher

我正在使用 Java 中的 mongo 反应式驱动程序和反应流库编写一个应用程序。

我有以下 DAO 代码:

@Override
public Flux<ContentVersion> findBySearch(String appKey, ContentVersionSearchRequest request, Pager pager) {
    final var searchResultsPublisher = mongoClient.getDatabase(appKey)
            .getCollection(COLLECTION_CONTENT_VERSION, ContentVersion.class)
            .find(prepareSearchFilter(request))
            .sort(orderBy(ascending(FIELD_VERSION_STATUS_ORDER), descending(FIELD_UPDATE_DATE)))
            .skip(pager.getSkip())
            .limit(pager.getMax());
    return Flux.from(searchResultsPublisher);
}
Run Code Online (Sandbox Code Playgroud)

在junit测试中,我模拟MongoClient、MongoDatabase、MongoCollection,但最后MongoCollection返回一个FindPublisher,我不知道如何正确模拟它。

我已经通过模拟订阅方法成功编写了单元测试,如下所示。然而,这对我来说似乎不对。

@Mock
private MongoClient mongoClient;

@Mock
private MongoDatabase database;

@Mock
private MongoCollection<ContentVersion> collection;

@Mock
private FindPublisher<ContentVersion> findPublisher;

@Mock
private UpdateResult updateResult;

@InjectMocks
private ContentVersionDaoImpl contentVersionDao;

@BeforeEach
void initCommonMocks() {
    when(mongoClient.getDatabase("ddpApp")).thenReturn(database);
    when(database.getCollection(MongoConstants.COLLECTION_CONTENT_VERSION, ContentVersion.class)).thenReturn(collection);
    when(collection.find(any(Bson.class))).thenReturn(findPublisher);
    when(collection.find(any(Document.class))).thenReturn(findPublisher);
    when(findPublisher.limit(anyInt())).thenReturn(findPublisher);
    when(findPublisher.skip(anyInt())).thenReturn(findPublisher);
    when(findPublisher.sort(any())).thenReturn(findPublisher);
}

@Test
void shouldFindBySearch() {
    final var contentVersion1 = …
Run Code Online (Sandbox Code Playgroud)

java unit-testing mongodb reactive-streams

5
推荐指数
0
解决办法
1078
查看次数

Hibernate Criteria:查找实体,如果其子项的子项具有特定属性

我需要编写一个Criteria(或hql)来通过子实体的子属性查找父实体.这是我的实体:

// The top level parent class
public class A {
    private Long id;
    private String someProperty;
    private B b;
    // and some other attributes...
}

// The second level parent class :)
public class B {
    private Long id;
    private List<C> cList;
    // and some other attributes...
}

public class C {
    private Long id;
    private B b;
    private List<D> dList;
    // Other attributes..
}

public class D {
    private Long id;
    private C c;
    private String importantAttribute;
    // …
Run Code Online (Sandbox Code Playgroud)

java hibernate hql criteria

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

为什么我的复制构造函数没有调用?

可能重复:
什么是复制省略和返回值优化?

我有以下程序:

#include <iostream>

using namespace std;

class Pointt {
public:
    int x;
    int y;

    Pointt() {
        x = 0;
        y = 0;
        cout << "def constructor called" << endl;
    }

    Pointt(int x, int y) {
        this->x = x;
        this->y = y;
        cout << "constructor called" << endl;
    }

    Pointt(const Pointt& p) {
        this->x = p.x;
        this->y = p.y;
        cout << "copy const called" << endl;
    }

    Pointt& operator=(const Pointt& p) {
        this->x = p.x;
        this->y = p.y;
        cout …
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading copy-constructor

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

如何在Oracle DB中按枚举排序

我想按字符串列排序,其中该列是枚举.例如:

+----+--------+----------------------+
| ID |  NAME  |        STATUS        |
+----+--------+----------------------+
|  1 | Serdar | ACTIVE               |
|  2 | John   | DEACTIVE             |
|  3 | Jerry  | WAITING_FOR_APPROVAL |
|  4 | Jessie | REJECTED             |
+----+--------+----------------------+
Run Code Online (Sandbox Code Playgroud)

我想订购STATUS.它应该对结果进行排序,使得第一个结果必须具有STATUS = WAITING_FOR_APPROVAL,然后是ACTIVE,然后是DEACTIVE,然后是REJECTED.

在SQL中有什么办法吗?在java中有像Comparator这样的东西吗?

sql database oracle enums sql-order-by

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