小编M. *_*rov的帖子

429
推荐指数
6
解决办法
37万
查看次数

使用DISTINCT关键字会导致此错误:不是SELECTed表达式

我有一个看起来像这样的查询:

SELECT DISTINCT share.rooms
FROM Shares share
  left join share.rooms.buildingAdditions.buildings.buildingInfoses as bi
... //where clause omitted
ORDER BY share.rooms.floors.floorOrder, share.rooms.roomNumber,
         share.rooms.firstEffectiveAt, share.shareNumber, share.sharePercent
Run Code Online (Sandbox Code Playgroud)

这导致以下异常:

Caused by: org.hibernate.exception.SQLGrammarException: ORA-01791: not a SELECTed expression
Run Code Online (Sandbox Code Playgroud)

如果我删除DISTINCT关键字,查询运行没有问题.如果我删除order by子句,则查询运行没有问题.不幸的是,我似乎无法获得没有重复的有序结果集.

sql oracle hibernate oracle11g

53
推荐指数
2
解决办法
6万
查看次数

在Spring中将路径变量绑定到自定义模型对象

我有一个模拟我的请求的类,比如

class Venue {
    private String city;
    private String place;

    // Respective getters and setters.
}
Run Code Online (Sandbox Code Playgroud)

我想支持一个RESTful URL来获取有关场地的信息.所以我有这样的控制器方法.

@RequestMapping(value = "/venue/{city}/{place}", method = "GET")
public String getVenueDetails(@PathVariable("city") String city, @PathVariable("place") String place, Model model) {
    // code
}
Run Code Online (Sandbox Code Playgroud)

有没有办法,我可以说在春天将我的路径变量绑定到模型对象(在本例中为Venue)而不是获取每个单独的参数?

java spring path-variables

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

Spring bean与运行时构造函数参数

我想在Spring Java配置中创建一个Spring bean,并在运行时传递一些构造函数参数.我创建了以下Java配置,其中有一个bean fixedLengthReport,它需要构造函数中的一些参数.

@Configuration
public class AppConfig {

    @Autowrire
    Dao dao;

    @Bean
    @Scope(value = "prototype")
    **//SourceSystem can change at runtime**
    public FixedLengthReport fixedLengthReport(String sourceSystem) {
         return new TdctFixedLengthReport(sourceSystem, dao);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到的错误是sourceSystem无法连接,因为没有找到bean.如何使用运行时构造函数参数创建bean?

我使用的是Spring 4.2

java spring spring-bean

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

Clojure STM(dosync)x Java同步块

Clojure STM(dosync)方法和Java同步Block有什么区别?

我正在阅读"睡觉的理发师"问题下面的代码.(http://www.bestinclass.dk/index.clj/2009/09/scala-vs-clojure-round-2-concurrency.html)

(defn the-shop [a]  
  (print "[k] entering shop" a)  
  (dosync     
    (if (< (count @queue) seats)  
      (alter queue conj a)  
      (print "[s] turning away customer" a))))
Run Code Online (Sandbox Code Playgroud)

为了避免竞争条件,dosync使用,所以我问自己"Java同步块有什么区别(STM)"?它会阻止这个关键代码吗?

提前致谢 !丹塔斯

java concurrency synchronization clojure stm

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

创建非捕获方法引用,它将调用超类方法

我正在尝试重构以下代码:

class Base {
  private Object a, b, <...>; // there's like 10 of these attributes of different type

  public Object a() {
    return a;
  }
  public Object b() {
    return b;
  }
  // more getters like the ones above
}

class RootNode extends Base { }

class BranchNode extends Base {
  private RootNode root; // passed via constructor

  public Object a() {
    Object value = super.a();
    return value != null ? value : root.a();
  }
  public Object b() { …
Run Code Online (Sandbox Code Playgroud)

java java-8 method-reference

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

双重嵌套事务的回滚绕过保存点

这并不完全像标题所说的那样,但接近。考虑这些 Spring bean:

@Bean
class BeanA {

    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = EvilException.class)
    public void methodA() {
        /* ... some actions */
        if (condition) {
            throw new EvilException();
        }
    }
}

@Bean
class BeanB {
    @Autowired private BeanA beanA;
    final int MAX_TRIES = 3;

    @Transactional(propagation = Propagation.NESTED)
    public void methodB() {
        // prepare to call Bean A
        try {
            beanA.methodA();
            /* maybe do some more things */
        }
        catch (EvilException e) {
           /* recover from evil */
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

java spring jdbc spring-transactions

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

Hibernate java 10

我将我的应用程序从java 8迁移到java 10.但是现在我在尝试将某些东西存储在数据库中时看到以下异常

Caused by: javax.persistence.RollbackException: Error while committing the transaction
    at org.hibernate.internal.ExceptionConverterImpl.convertCommitException(ExceptionConverterImpl.java:77) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517) ~[spring-orm-4.3.18.RELEASE.jar:4.3.18.RELEASE]
... 91 more
Caused by: org.hibernate.AssertionFailure: Exception releasing cache locks
    at org.hibernate.engine.spi.ActionQueue$AfterTransactionCompletionProcessQueue.afterTransactionCompletion(ActionQueue.java:990) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.engine.spi.ActionQueue.afterTransactionCompletion(ActionQueue.java:513) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.internal.SessionImpl.afterTransactionCompletion(SessionImpl.java:2501) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.afterTransactionCompletion(JdbcCoordinatorImpl.java:479) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.afterCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:198) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$400(JdbcResourceLocalTransactionCoordinatorImpl.java:39) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:273) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:98) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517) ~[spring-orm-4.3.18.RELEASE.jar:4.3.18.RELEASE]
... 91 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private jdk.internal.reflect.ConstructorAccessorImpl jdk.internal.reflect.DelegatingConstructorAccessorImpl.delegate accessible: module java.base does not "opens jdk.internal.reflect" to unnamed module …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa spring-boot

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

构建错误android studio 3.1

将 Android Studio 更新到 3.1 后,我在加载新的模板项目时遇到错误。

尝试使用和不使用此选项,但没有用:

maven {
    url "https://maven.google.com"
}
Run Code Online (Sandbox Code Playgroud)

在构建过程中,我看到以下消息:

Caused by: org.gradle.internal.resolve.ModuleVersionResolveException:
           Could not resolve com.android.tools.build:gradle:3.1.0.
<6 internal calls>
   ... 128 more
Caused by: org.gradle.api.resources.ResourceException:
           Could not get resource 'https://dl/google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.0/gradle-3.1.0.pom' <21 internal calls>
   ... 133 more
Caused by: org.gradle.internal.resource.transport.http.HttpRequestException:
           Could not GET 'https://dl/google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.0/gradle-3.1.0.pom'. <16 internal calls>
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to dl.google.com:433 [dl.google.com/216.58.199.142] failed
Run Code Online (Sandbox Code Playgroud)

构建.gradle

apply plugin: 'com.android.application'

android {
  compileSdkVersion 27
  buildToolsVersion "27.0.3"
  defaultConfig {
    applicationId "com.example.am.myapplicationtest"
    minSdkVersion 19
    targetSdkVersion 27
    versionCode 1
    versionName "1.0" …
Run Code Online (Sandbox Code Playgroud)

android compiler-errors

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

在一定时间内执行Java程序

我有一个要求,我需要在工作日的上午9点到下午5点之间运行Java程序。时区将始终为UTC。该程序应从上午9点开始,并应在下午5点之前结束。如果无法在下午5点之前完成,则应睡到第二天08:59:59。如果第二天是周末,那么应该从星期一开始。

使用Joda时间的两个日期之间以秒为单位的文章差异?解释了如何获取两个预定义日期之间的秒差,但是我一直想计算下一个工作日上午9点与当前时间之间的差。

我正在考虑通过计算两个日期之间的时间差来使用Thread.sleep()。是否有一个Joda Time API,可以用来计算两个日期之间的时差?

我已经尝试获取当前工作日和第二天上午9点(如果它是工作日),计算这两个纪元之间的差,并将该值用于Thread.sleep,但这有点混乱。

以下是我使用的伪代码

getNextDayEpoch函数包含if / else代码,使用确定日期是工作日/周末java确定是工作日还是周末

根据是工作日还是周末,我得到相应的纪元值。

currentEpoch = getCurrentEpoch()
nextDayEpoch = getNextDayEpoch()

difference = nextDayEpoch - currentDayEpoch

try {
    Thread.sleep(difference);
} catch (InterruptedException e) {
    e.printStackTrace();
}

Run Code Online (Sandbox Code Playgroud)

您能提出更好的建议吗?

java jodatime

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