Code Monkey home page Code Monkey logo

objectivesql's Issues

Failed to write Order.memberId, because setter method require Integer

运行下面代码:

Relationship[] memberRelation = new Relationship[]{Order.BELONGS_TO_MEMBER};
Order order = Order.queryByPrimaryKey(1L, memberRelation);

报错:

java.sql.SQLException: Failed to write Order.memberId, because setter method require Integer, but give a Long(1)

	at com.github.braisdom.objsql.Databases.sqlBenchmarking(Databases.java:220)
	at com.github.braisdom.objsql.DefaultSQLExecutor.query(DefaultSQLExecutor.java:41)
	at com.github.braisdom.objsql.DefaultQuery.lambda$execute$0(DefaultQuery.java:49)
	at com.github.braisdom.objsql.Databases.execute(Databases.java:193)
	at com.github.braisdom.objsql.DefaultQuery.execute(DefaultQuery.java:44)
	at com.github.braisdom.objsql.DefaultQuery.queryFirst(DefaultQuery.java:61)
	at com.github.braisdom.objsql.example.domains.Order.queryByPrimaryKey(Order.java:15)
	at com.github.braisdom.objsql.example.RelationExample.queryBelongsTo(RelationExample.java:84)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)
Caused by: com.github.braisdom.objsql.reflection.ReflectionException: Failed to write Order.memberId, because setter method require Integer, but give a Long(1)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:142)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:122)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:118)
	at com.github.braisdom.objsql.BeanModelDescriptor.setFieldValue(BeanModelDescriptor.java:279)
	at com.github.braisdom.objsql.DomainModelListHandler.createBean(DefaultSQLExecutor.java:120)
	at com.github.braisdom.objsql.DomainModelListHandler.handle(DefaultSQLExecutor.java:88)
	at com.github.braisdom.objsql.DomainModelListHandler.handle(DefaultSQLExecutor.java:68)
	at com.github.braisdom.objsql.jdbc.QueryRunner.query(QueryRunner.java:343)
	at com.github.braisdom.objsql.jdbc.QueryRunner.query(QueryRunner.java:207)
	at com.github.braisdom.objsql.DefaultSQLExecutor.lambda$query$0(DefaultSQLExecutor.java:42)
	at com.github.braisdom.objsql.Databases.sqlBenchmarking(Databases.java:206)
	... 30 more

我集成了objsql-spring 报错

java.lang.IllegalStateException: The connectionFactory cannot be null
        <dependency>
            <groupId>com.github.braisdom</groupId>
            <artifactId>objsql-springboot</artifactId>
            <version>${springboot.version}</version>
        </dependency>

java: 已在类 com.github.braisdom.objsql.benchmark.User中定义了变量 id

Java 代码:

@DomainModel
public class User {

    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Maven 编译时错误:

Error:(6,8) java: 已在类 com.github.braisdom.objsql.benchmark.User中定义了变量 id

我的IntelliJ IDEA 一直报这个错误,不影响,看着难受

provider: com.github.braisdom.objsql.intellij.ObjSqlPsiAugmentProvider@7880b09c

java.lang.IllegalArgumentException: Argument for @NotNull parameter 'type' of com/github/braisdom/objsql/intellij/ObjsqlLightFieldBuilder.<init> must not be null
	at com.github.braisdom.objsql.intellij.ObjsqlLightFieldBuilder.$$$reportNull$$$0(ObjsqlLightFieldBuilder.java)
	at com.github.braisdom.objsql.intellij.ObjsqlLightFieldBuilder.<init>(ObjsqlLightFieldBuilder.java)
	at com.github.braisdom.objsql.intellij.ModelMethodBuilder.buildTableName(ModelMethodBuilder.java:39)
	at com.github.braisdom.objsql.intellij.ModelMethodBuilder.buildField(ModelMethodBuilder.java:17)
	at com.github.braisdom.objsql.intellij.ObjSqlPsiAugmentProvider$ObjSqlCachedValueProvider.lambda$compute$0(ObjSqlPsiAugmentProvider.java:110)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:112)
	at com.github.braisdom.objsql.intellij.ObjSqlPsiAugmentProvider$ObjSqlCachedValueProvider.compute(ObjSqlPsiAugmentProvider.java:96)
	at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:153)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
	at com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:71)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
	at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:76)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:150)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:120)
	at com.github.braisdom.objsql.intellij.ObjSqlPsiAugmentProvider.getAugments(ObjSqlPsiAugmentProvider.java:51)
	at com.intellij.psi.augment.PsiAugmentProvider.lambda$getAugments$0(PsiAugmentProvider.java:58)
	at com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:174)
	at com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
	at com.intellij.psi.augment.PsiAugmentProvider.getAugments(PsiAugmentProvider.java:61)
	at com.intellij.psi.augment.PsiAugmentProvider.lambda$collectAugments$2(PsiAugmentProvider.java:110)
	at com.intellij.psi.augment.PsiAugmentProvider.forEach(PsiAugmentProvider.java:177)
	at com.intellij.psi.augment.PsiAugmentProvider.collectAugments(PsiAugmentProvider.java:109)
	at com.intellij.psi.impl.source.ClassInnerStuffCache.lambda$getFieldsMap$7(ClassInnerStuffCache.java:164)
	at com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:174)
	at com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
	at com.intellij.psi.impl.source.ClassInnerStuffCache.findFieldByName(ClassInnerStuffCache.java:61)
	at com.intellij.psi.impl.source.PsiClassImpl.findFieldByName(PsiClassImpl.java:345)
	at com.intellij.psi.impl.PsiClassImplUtil.processCachedMembersByName(PsiClassImplUtil.java:496)
	at com.intellij.psi.impl.PsiClassImplUtil.processDeclarationsInClass(PsiClassImplUtil.java:458)
	at com.intellij.psi.impl.PsiClassImplUtil.processDeclarationsInClass(PsiClassImplUtil.java:435)
	at com.intellij.psi.impl.source.PsiClassImpl.processDeclarations(PsiClassImpl.java:474)
	at com.intellij.psi.scope.util.PsiScopesUtil.treeWalkUp(PsiScopesUtil.java:75)
	at com.intellij.psi.scope.util.PsiScopesUtil.treeWalkUp(PsiScopesUtil.java:54)
	at com.intellij.psi.scope.util.PsiScopesUtil.resolveAndWalk(PsiScopesUtil.java:221)
	at com.intellij.psi.scope.util.PsiScopesUtil.resolveAndWalk(PsiScopesUtil.java:150)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolveToVariable(PsiReferenceExpressionImpl.java:332)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolve(PsiReferenceExpressionImpl.java:243)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$000(PsiReferenceExpressionImpl.java:45)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:183)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:173)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:185)
	at com.intellij.openapi.util.Computable.get(Computable.java:17)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$loggingResolver$3(ResolveCache.java:227)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:71)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:204)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:185)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver$1.elementFinished(PsiReferenceExpressionImpl.java:222)
	at com.intellij.psi.JavaRecursiveElementWalkingVisitor$1.elementFinished(JavaRecursiveElementWalkingVisitor.java:35)
	at com.intellij.psi.JavaRecursiveElementWalkingVisitor$1.elementFinished(JavaRecursiveElementWalkingVisitor.java:32)
	at com.intellij.util.WalkingState.next(WalkingState.java:94)
	at com.intellij.util.WalkingState.walkChildren(WalkingState.java:58)
	at com.intellij.util.WalkingState.elementStarted(WalkingState.java:49)
	at com.intellij.psi.PsiWalkingState.elementStarted(PsiWalkingState.java:76)
	at com.intellij.psi.JavaRecursiveElementWalkingVisitor.visitElement(JavaRecursiveElementWalkingVisitor.java:41)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver$1.visitReferenceExpression(PsiReferenceExpressionImpl.java:215)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.accept(PsiReferenceExpressionImpl.java:784)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolveAllQualifiers(PsiReferenceExpressionImpl.java:205)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:182)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:173)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:185)
	at com.intellij.openapi.util.Computable.get(Computable.java:17)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$loggingResolver$3(ResolveCache.java:227)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:71)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:204)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:185)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:802)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:794)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:338)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl$TypeEvaluator.fun(PsiMethodCallExpressionImpl.java:143)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl$TypeEvaluator.fun(PsiMethodCallExpressionImpl.java:138)
	at com.intellij.psi.impl.source.resolve.JavaResolveCache.lambda$getType$0(JavaResolveCache.java:65)
	at com.intellij.psi.util.CachedValuesManager.lambda$getProjectPsiDependentCache$0(CachedValuesManager.java:132)
	at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:153)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
	at com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:71)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
	at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:76)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:150)
	at com.intellij.psi.util.CachedValuesManager.getProjectPsiDependentCache(CachedValuesManager.java:131)
	at com.intellij.psi.impl.source.resolve.JavaResolveCache.getType(JavaResolveCache.java:65)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl.getType(PsiMethodCallExpressionImpl.java:38)
	at org.jetbrains.uast.java.JavaAbstractUExpression.getExpressionType(JavaAbstractUElement.kt:133)
	at com.intellij.codeInsight.daemon.impl.IconLineMarkerProvider.getLineMarkerInfo(IconLineMarkerProvider.java:45)
	at com.intellij.codeInsight.daemon.impl.LineMarkersPass.queryProviders(LineMarkersPass.java:163)
	at com.intellij.codeInsight.daemon.impl.LineMarkersPass.lambda$queryLineMarkersForInjected$8(LineMarkersPass.java:224)
	at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil.probeElementsUp(InjectedLanguageUtil.java:359)
	at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil.enumerate(InjectedLanguageUtil.java:164)
	at com.intellij.psi.impl.source.tree.injected.InjectedLanguageManagerImpl.enumerateEx(InjectedLanguageManagerImpl.java:311)
	at com.intellij.codeInsight.daemon.impl.LineMarkersPass.queryLineMarkersForInjected(LineMarkersPass.java:216)
	at com.intellij.codeInsight.daemon.impl.LineMarkersPass.queryProviders(LineMarkersPass.java:178)
	at com.intellij.codeInsight.daemon.impl.LineMarkersPass.lambda$doCollectInformation$3(LineMarkersPass.java:88)
	at com.intellij.codeInsight.daemon.impl.Divider.divideInsideAndOutsideInOneRoot(Divider.java:81)
	at com.intellij.codeInsight.daemon.impl.LineMarkersPass.doCollectInformation(LineMarkersPass.java:83)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:54)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$1(PassExecutorService.java:399)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1110)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:392)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:629)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:581)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:391)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:367)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:170)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:182)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:365)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:181)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

IntelliJ 插件报错

java.lang.Throwable: Non-idempotent computation: it returns different results when invoked multiple times or on different threads:
  Light PSI class: Table != Light PSI class: Table
  which is 0th element of [Light PSI class: Table] and [Light PSI class: Table]

Recomputation gives com.intellij.util.CachedValueBase$Data@19385316 which is different from both values
Recomputation log:
  Resolving PsiJavaCodeReferenceElement:Relation of class com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:143)
	at com.intellij.util.IdempotenceChecker.reportFailure(IdempotenceChecker.java:92)
	at com.intellij.util.IdempotenceChecker.checkEquivalence(IdempotenceChecker.java:79)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:245)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
	at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:76)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:150)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:120)
	at com.github.braisdom.objsql.intellij.ObjSqlPsiAugmentProvider.getAugments(ObjSqlPsiAugmentProvider.java:50)
	at com.intellij.psi.augment.PsiAugmentProvider.lambda$getAugments$0(PsiAugmentProvider.java:58)
	at com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:174)
	at com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
	at com.intellij.psi.augment.PsiAugmentProvider.getAugments(PsiAugmentProvider.java:61)
	at com.intellij.psi.augment.PsiAugmentProvider.lambda$collectAugments$2(PsiAugmentProvider.java:110)
	at com.intellij.psi.augment.PsiAugmentProvider.forEach(PsiAugmentProvider.java:177)
	at com.intellij.psi.augment.PsiAugmentProvider.collectAugments(PsiAugmentProvider.java:109)
	at com.intellij.psi.impl.source.ClassInnerStuffCache.lambda$getInnerClassesMap$10(ClassInnerStuffCache.java:196)
	at com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:174)
	at com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
	at com.intellij.psi.impl.source.ClassInnerStuffCache.findInnerClassByName(ClassInnerStuffCache.java:80)
	at com.intellij.psi.impl.source.PsiClassImpl.findInnerClassByName(PsiClassImpl.java:377)
	at com.intellij.psi.impl.PsiClassImplUtil.processCachedMembersByName(PsiClassImplUtil.java:540)
	at com.intellij.psi.impl.PsiClassImplUtil.processDeclarationsInClass(PsiClassImplUtil.java:458)
	at com.intellij.psi.impl.PsiClassImplUtil.processDeclarationsInClass(PsiClassImplUtil.java:435)
	at com.intellij.psi.impl.source.PsiClassImpl.processDeclarations(PsiClassImpl.java:474)
	at com.intellij.psi.scope.util.PsiScopesUtil.treeWalkUp(PsiScopesUtil.java:75)
	at com.intellij.psi.scope.util.PsiScopesUtil.treeWalkUp(PsiScopesUtil.java:54)
	at com.intellij.psi.scope.util.PsiScopesUtil.resolveAndWalk(PsiScopesUtil.java:221)
	at com.intellij.psi.scope.util.PsiScopesUtil.resolveAndWalk(PsiScopesUtil.java:150)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.resolve(PsiJavaCodeReferenceElementImpl.java:489)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.access$100(PsiJavaCodeReferenceElementImpl.java:44)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:375)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:368)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:185)
	at com.intellij.openapi.util.Computable.get(Computable.java:17)

运行MS SQL Server 单元测试的时候报错

异常信息如下:

com.microsoft.sqlserver.jdbc.SQLServerException: Cannot open database "objective_sql" requested by the login. The login failed. ClientConnectionId:6bcf60cc-d6e4-4f76-a656-93e20b622cff

	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262)
	at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:283)
	at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:129)
	at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:37)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:5233)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3988)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:85)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3932)
	at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7375)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3206)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2713)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2362)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2213)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1276)
	at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:861)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at com.github.braisdom.objsql.example.MSSQLExample$MSSQLConnectionFactory.getConnection(MSSQLExample.java:25)
	at com.github.braisdom.objsql.Databases.execute(Databases.java:192)
	at com.github.braisdom.objsql.Databases.execute(Databases.java:173)
	at com.github.braisdom.objsql.Databases.execute(Databases.java:169)
	at com.github.braisdom.objsql.example.MSSQLExample.initializeSchemas(MSSQLExample.java:39)
	at com.github.braisdom.objsql.example.MSSQLExample.prepareEnv(MSSQLExample.java:47)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)

打开ObjectiveSQL 报错

ObjectiveSQL 1.3.7, IntelliJ IDEA 插件:1.2.8,报错信息如下:

org.intellij.sequencer.SequencePlugin2@65ab3257

com.intellij.serviceContainer.AlreadyDisposedException: Already disposed: Project(name=funcsql, containerState=DISPOSE_IN_PROGRESS, componentStore=/Users/braisdom/funcsql)
	at com.intellij.serviceContainer.ComponentManagerImpl.getMessageBus(ComponentManagerImpl.kt:140)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.fireStateChanged(ToolWindowManagerImpl.kt:1488)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.unregisterToolWindow(ToolWindowManagerImpl.kt:1052)
	at org.intellij.sequencer.SequencePlugin2.projectClosed(SequencePlugin2.java:81)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.fireProjectClosed(ProjectManagerImpl.java:480)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.lambda$closeProject$5(ProjectManagerImpl.java:383)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:980)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.closeProject(ProjectManagerImpl.java:372)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.closeAndDispose(ProjectManagerImpl.java:407)
	at com.intellij.openapi.wm.impl.CloseProjectWindowHelper.closeProjectAndShowWelcomeFrameIfNoProjectOpened(CloseProjectWindowHelper.kt:44)
	at com.intellij.openapi.wm.impl.CloseProjectWindowHelper.windowClosing(CloseProjectWindowHelper.kt:32)
	at com.intellij.openapi.wm.impl.ProjectFrameHelper$2.windowClosing(ProjectFrameHelper.java:225)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:357)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:357)
	at java.desktop/java.awt.Window.processWindowEvent(Window.java:2079)
	at java.desktop/javax.swing.JFrame.processWindowEvent(JFrame.java:298)
	at java.desktop/java.awt.Window.processEvent(Window.java:2038)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5029)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:971)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:841)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:452)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:744)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:451)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:802)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:505)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

异常提示不准确

我跟踪后发现是MemberUser 类没有增加 DomainModel Annotation,但异常信息如下:

image

image

Quickfix error

我在execute 上进行Quckfix 操作, “Add throws on method",生成的代码如下:

    public static List<Order> queryOrders(String begin, String end, String[] memberNos)SQLSyntaxException
             {
        Order.Table order = Order.asTable();
        Member.Table member = Member.asTable();
        Select select = new Select();

        return select.execute(DatabaseType.MySQL, Order.class);
    }

很明显有问题,

感觉PrimaryKey 的设计比较诡异

1)为什么PrimaryKey 是通过DomainModel 设置的,不通过PrimaryKey Annotation 自定义呢?
2)我可以取消一个模型的主键吗?

在PostgreSQL 中插入Timestamp 类型报错

ObjectiveSQL 1.3.7
插入代码:

Order order = new Order()
                .setNo("202000001")
                .setMemberId(3)
                .setAmount(3.5d)
                .setQuantity(100.3d)
                .setSalesAt(Timestamp.valueOf("2020-05-01 09:30:00"));
        order.save(false, true);

异常信息

java.sql.SQLException: ERROR: column "sales_at" is of type timestamp without time zone but expression is of type character varying
  建议:You will need to rewrite or cast the expression.
  位置:92 Query: INSERT INTO "orders" ("no","member_id","amount","quantity","sales_at") VALUES (?,?,?,?,?) Parameters: [202000001, 3, 3.5, 100.3, 2020-05-01 09:30:00.0]

	at com.github.braisdom.objsql.jdbc.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:369)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insert(QueryRunner.java:605)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insert(QueryRunner.java:560)
	at com.github.braisdom.objsql.DefaultSQLExecutor.lambda$insert$1(DefaultSQLExecutor.java:50)
	at com.github.braisdom.objsql.Databases.sqlBenchmarking(Databases.java:206)
	at com.github.braisdom.objsql.DefaultSQLExecutor.insert(DefaultSQLExecutor.java:49)
	at com.github.braisdom.objsql.DefaultPersistence.lambda$insert$0(DefaultPersistence.java:82)
	at com.github.braisdom.objsql.Databases.execute(Databases.java:193)
	at com.github.braisdom.objsql.DefaultPersistence.insert(DefaultPersistence.java:70)
	at com.github.braisdom.objsql.DefaultPersistence.save(DefaultPersistence.java:52)
	at com.github.braisdom.objsql.example.domains.Order.save(Order.java:15)
	at com.github.braisdom.objsql.example.PersistenceExample.createOrder(PersistenceExample.java:191)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)

希望可以接入sqlhelper

active record模式不错,有不少人喜欢。
是sqlhelper是一款强大的sql开发套件,支持分页、ddl dump,sql格式化等。这些功能都是独立于任何现有orm框架的,也是可以和他们无缝对接的。所以希望可以接入咱这款产品

异常提示中表别名的建议

image

一个复杂查询里,涉及多张表,T0, T1 这些名称的表示很难找到原始的表,能不能将原始表带上呀。

这个API 设计的很诡异

Select select = new Select();

select.from(order, member)
        .where(order.memberId.eq(member.id));
select.project(member.no,
        member.name,
        member.mobile,
        countDistinct(order.no).as("order_count"),
        sum(order.quantity).as("total_quantity"),
        sum(order.amount).as("total_amount"),
        min(order.salesAt).as("first_shopping"),
        max(order.salesAt).as("last_shopping"));
select.groupBy(member.no, member.name, member.mobile);

return select.execute(DatabaseType.MySQL, Member.class);

execute 时的DatabaseType 是很别扭呀,其它的ORM 框架都需要明确告诉框架数据的类型,应该可以自动获取的

it returns different results when invoked multiple times or on different threads: 38 != 30

我在编码的过程中,IntelliJ 报了这个错,随机的,完整的堆栈如下,望尽快修复:

java.lang.Throwable: Non-idempotent computation: it returns different results when invoked multiple times or on different threads:
  38 != 30
  which is length of [ObjSqlLightMethodBuilder#setNo, ObjSqlLightMethodBuilder#getNo, ObjSqlLightMethodBuilder#setName, ObjSqlLightMethodBuilder#getName, ObjSqlLightMethodBuilder#setGender, ObjSqlLightMethodBuilder#getGender, ObjSqlLightMethodBuilder#setMobile, ObjSqlLightMethodBuilder#getMobile, ObjSqlLightMethodBuilder#setId, ObjSqlLightMethodBuilder#getId, ObjSqlLightMethodBuilder#queryByPrimaryKey, ObjSqlLightMethodBuilder#createQuery, ObjSqlLightMethodBuilder#count, ObjSqlLightMethodBuilder#countAll, ObjSqlLightMethodBuilder#query, ObjSqlLightMethodBuilder#query, ObjSqlLightMethodBuilder#queryBySql, ObjSqlLightMethodBuilder#queryFirst, ObjSqlLightMethodBuilder#queryFirst, ObjSqlLightMethodBuilder#queryAll, ObjSqlLightMethodBuilder#createPersistence, ObjSqlLightMethodBuilder#create, ObjSqlLightMethodBuilder#create, ObjSqlLightMethodBuilder#create, ObjSqlLightMethodBuilder#create, ObjSqlLightMethodBuilder#update, ObjSqlLightMethodBuilder#update, ObjSqlLightMethodBuilder#destroy, ObjSqlLightMethodBuilder#destroy, ObjSqlLightMethodBuilder#save, ObjSqlLightMethodBuilder#save, ObjSqlLightMethodBuilder#validate, ObjSqlLightMethodBuilder#execute, ObjSqlLightMethodBuilder#newInstanceFrom, ObjSqlLightMethodBuilder#newInstanceFrom, ObjSqlLightMethodBuilder#getRawAttributes, ObjSqlLightMethodBuilder#getRawAttribute, ObjSqlLightMethodBuilder#asTable] and [ObjSqlLightMethodBuilder#setId, ObjSqlLightMethodBuilder#getId, ObjSqlLightMethodBuilder#queryByPrimaryKey, ObjSqlLightMethodBuilder#createQuery, ObjSqlLightMethodBuilder#count, ObjSqlLightMethodBuilder#countAll, ObjSqlLightMethodBuilder#query, ObjSqlLightMethodBuilder#query, ObjSqlLightMethodBuilder#queryBySql, ObjSqlLightMethodBuilder#queryFirst, ObjSqlLightMethodBuilder#queryFirst, ObjSqlLightMethodBuilder#queryAll, ObjSqlLightMethodBuilder#createPersistence, ObjSqlLightMethodBuilder#create, ObjSqlLightMethodBuilder#create, ObjSqlLightMethodBuilder#create, ObjSqlLightMethodBuilder#create, ObjSqlLightMethodBuilder#update, ObjSqlLightMethodBuilder#update, ObjSqlLightMethodBuilder#destroy, ObjSqlLightMethodBuilder#destroy, ObjSqlLightMethodBuilder#save, ObjSqlLightMethodBuilder#save, ObjSqlLightMethodBuilder#validate, ObjSqlLightMethodBuilder#execute, ObjSqlLightMethodBuilder#newInstanceFrom, ObjSqlLightMethodBuilder#newInstanceFrom, ObjSqlLightMethodBuilder#getRawAttributes, ObjSqlLightMethodBuilder#getRawAttribute, ObjSqlLightMethodBuilder#asTable]

Recomputation gives com.intellij.util.CachedValueBase$Data@26fbcccc which is equivalent to 'fresh'
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:146)
	at com.intellij.util.IdempotenceChecker.reportFailure(IdempotenceChecker.java:91)
	at com.intellij.util.IdempotenceChecker.checkEquivalence(IdempotenceChecker.java:78)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:245)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
	at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:73)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:154)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:136)
	at com.intellij.psi.impl.source.ClassInnerStuffCache.getMethods(ClassInnerStuffCache.java:43)
	at com.intellij.psi.impl.source.PsiClassImpl.getMethods(PsiClassImpl.java:278)
	at com.intellij.psi.impl.PsiClassImplUtil.lambda$createMembersMap$4(PsiClassImplUtil.java:343)
	at com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:181)
	at com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
	at com.intellij.psi.impl.PsiClassImplUtil$MembersMap.get(PsiClassImplUtil.java:326)
	at com.intellij.psi.impl.PsiClassImplUtil$MembersMap.access$000(PsiClassImplUtil.java:318)
	at com.intellij.psi.impl.PsiClassImplUtil.processCachedMembersByName(PsiClassImplUtil.java:531)
	at com.intellij.psi.impl.PsiClassImplUtil.processDeclarationsInClass(PsiClassImplUtil.java:412)
	at com.intellij.psi.impl.PsiClassImplUtil.processDeclarationsInClass(PsiClassImplUtil.java:389)
	at com.intellij.psi.impl.source.PsiClassImpl.processDeclarations(PsiClassImpl.java:476)
	at com.intellij.psi.scope.util.PsiScopesUtil.processQualifierResult(PsiScopesUtil.java:499)
	at com.intellij.psi.scope.util.PsiScopesUtil.setupAndRunProcessor(PsiScopesUtil.java:344)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolveToMethod(PsiReferenceExpressionImpl.java:323)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolve(PsiReferenceExpressionImpl.java:302)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$100(PsiReferenceExpressionImpl.java:50)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:205)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:181)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:182)
	at com.intellij.openapi.util.Computable.get(Computable.java:17)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$loggingResolver$3(ResolveCache.java:225)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:117)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:75)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:202)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:182)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:786)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:778)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:365)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.advancedResolve(PsiReferenceExpressionImpl.java:527)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolve(PsiReferenceExpressionImpl.java:826)
	at com.android.tools.idea.AndroidPsiUtils.getResourceReferenceType(AndroidPsiUtils.java:302)
	at com.android.tools.idea.folding.ResourceFoldingBuilder.findJavaExpressionReference(ResourceFoldingBuilder.java:164)
	at com.android.tools.idea.folding.ResourceFoldingBuilder.access$000(ResourceFoldingBuilder.java:47)
	at com.android.tools.idea.folding.ResourceFoldingBuilder$1.visitReferenceExpression(ResourceFoldingBuilder.java:94)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.accept(PsiReferenceExpressionImpl.java:805)
	at com.intellij.psi.PsiWalkingState.visit(PsiWalkingState.java:70)
	at com.intellij.psi.PsiWalkingState.visit(PsiWalkingState.java:27)
	at com.intellij.util.WalkingState.walkChildren(WalkingState.java:65)
	at com.intellij.util.WalkingState.elementStarted(WalkingState.java:52)
	at com.intellij.psi.PsiWalkingState.elementStarted(PsiWalkingState.java:79)
	at com.intellij.psi.JavaRecursiveElementWalkingVisitor.visitElement(JavaRecursiveElementWalkingVisitor.java:41)
	at com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:35)
	at com.intellij.psi.JavaElementVisitor.visitJavaFile(JavaElementVisitor.java:340)
	at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.accept(PsiJavaFileBaseImpl.java:482)
	at com.android.tools.idea.folding.ResourceFoldingBuilder.buildFoldRegions(ResourceFoldingBuilder.java:91)
	at com.intellij.lang.folding.LanguageFolding.buildFoldingDescriptorsNoPlaceholderCaching(LanguageFolding.java:92)
	at com.intellij.lang.folding.CompositeFoldingBuilder.buildFoldRegions(CompositeFoldingBuilder.java:37)
	at com.intellij.lang.folding.LanguageFolding.buildFoldingDescriptorsNoPlaceholderCaching(LanguageFolding.java:92)
	at com.intellij.lang.folding.LanguageFolding.buildFoldingDescriptors(LanguageFolding.java:75)
	at com.intellij.codeInsight.folding.impl.FoldingUpdate.getFoldingsFor(FoldingUpdate.java:243)
	at com.intellij.codeInsight.folding.impl.FoldingUpdate.getFoldingsFor(FoldingUpdate.java:223)
	at com.intellij.codeInsight.folding.impl.FoldingUpdate.getUpdateResult(FoldingUpdate.java:81)
	at com.intellij.codeInsight.folding.impl.FoldingUpdate.lambda$updateFoldRegions$0(FoldingUpdate.java:70)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
	at com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:117)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:75)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
	at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:73)
	at com.intellij.codeInsight.folding.impl.FoldingUpdate.updateFoldRegions(FoldingUpdate.java:67)
	at com.intellij.codeInsight.folding.impl.CodeFoldingManagerImpl.updateFoldRegions(CodeFoldingManagerImpl.java:229)
	at com.intellij.codeInsight.folding.impl.CodeFoldingManagerImpl.updateFoldRegionsAsync(CodeFoldingManagerImpl.java:215)
	at com.intellij.codeInsight.daemon.impl.CodeFoldingPass.doCollectInformation(CodeFoldingPass.java:42)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:52)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:434)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1106)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:427)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:625)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:570)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:426)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:402)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:168)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:168)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:400)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:171)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)

运行 updateSmithMember 其它属性全部为NULL 了,急!!

代码如下:

private static void updateSmithMember() throws SQLException {
        Map<String, Object> extendedAttributes = new HashMap<>();
        extendedAttributes.put("hobbies", new String[]{"Play football", "Cooking"});
        extendedAttributes.put("age", 28);

        Member newMember = new Member()
                .setName("Smith => Jackson")
                .setExtendedAttributes(extendedAttributes);

        Member.update(12, newMember, true);
    }

我跟踪进去了,好像:skipNullValueOnUpdating 有问题

为啥生成的SQL 里太多括号呀?

我运行了官方的示例,生成的SQL 如下:

SELECT ((((SUM(`T0`.`amount` ) / SUM(`T0`.`quantity` ) )) * 100))
FROM `orders` AS `T0`
WHERE ((`T0`.`quantity` > 30) AND 
       `T0`.`sales_at` BETWEEN '2020-10-10 00:00:00' AND '2020-10-30 23:59:59')
GROUP BY `T0`.`product_id`

表达式里的括号太多了,看不太清。

代码BUG

private void prepareColumnToPropertyOverrides(Class<T> rowClass) {
    Field[] fields = rowClass.getDeclaredFields();
    Arrays.stream(fields).forEach(field -> {
        PrimaryKey primaryKey = field.getAnnotation(PrimaryKey.class);
        Column column = field.getAnnotation(Column.class);

        if (primaryKey != null) {
            String columnName = StringUtil.isBlank(primaryKey.name())
                    ? WordUtil.underscore(field.getName()) : primaryKey.name();
            columnToField.put(columnName, field);
            columnToField.put(columnName.toUpperCase(), field);
        } else if (column != null) {
            String columnName = StringUtil.isBlank(column.name())
                    ? WordUtil.underscore(field.getName()) : primaryKey.name();
            columnToField.put(columnName.toUpperCase(), field);
            columnToField.put(columnName, field);
        } else {
            columnToField.put(WordUtil.underscore(field.getName()), field);
            columnToField.put(WordUtil.underscore(field.getName()).toUpperCase(), field);
        }
    });
}

进入第一个 else if 中说明 primaryKey 为 null。取用primaryKey取值导致 NullPointException

mysql表没有主键自增会报错怎么处理

mysql表没有主键自增会报错
DDL:

CREATE TABLE `objective_sql`.`members`(
   `id` INT UNSIGNED,
   `no` VARCHAR(100),
   `name` VARCHAR(100),
   `gender` INT(2),
   `mobile` VARCHAR(11),
   `extended_attributes` VARCHAR(512),
   `registered_at` DATETIME,
   `updated_at` DATETIME,
   PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

新增代码:

Member newMember = new Member();
newMember.setId(2L)
        .setNo("100000")
        .setName("Pamela")
        .setGender(1)
        .setRegisteredAtWithJoda(DateTime.now())
        .setUpdatedAt(Timestamp.valueOf("2020-10-05 00:00:00"))
        .setMobile("15011112222");

Member member = Member.create(newMember, true, true);

报错信息:

java.sql.SQLException: Field 'id' doesn't have a default value Query: INSERT INTO `members` (`no`,`name`,`gender`,`mobile`,`extended_attributes`,`registered_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) Parameters: [100000, Pamela, 1, 15011112222, null, 2020-11-26 17:35:54.318, 2020-10-05 00:00:00.0]

	at com.github.braisdom.objsql.jdbc.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:369)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insert(QueryRunner.java:605)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insert(QueryRunner.java:560)
	at com.github.braisdom.objsql.DefaultSQLExecutor.lambda$insert$1(DefaultSQLExecutor.java:50)
	at com.github.braisdom.objsql.Databases.sqlBenchmarking(Databases.java:229)
	at com.github.braisdom.objsql.DefaultSQLExecutor.insert(DefaultSQLExecutor.java:49)
	at com.github.braisdom.objsql.DefaultPersistence.lambda$insert$0(DefaultPersistence.java:82)
	at com.github.braisdom.objsql.Databases.execute(Databases.java:216)
	at com.github.braisdom.objsql.DefaultPersistence.insert(DefaultPersistence.java:70)
	at com.github.braisdom.objsql.example.domains.Member.create(Member.java:15)
	at com.github.braisdom.objsql.example.PersistenceExample.createSimpleMemberSkipValidation(PersistenceExample.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insert(QueryRunner.java:601)
	... 32 more

关联对象查询 sql语句正常但是返回NullPointerException

image

关联查询出现了java.lang.NullPointerException

  1. 进行一对多查询时报null指针异常
Member.queryAll(Member.HAS_MANY_ORDERS);
  1. 查询之后日志打印的sql可以直接放到数据库查询
SELECT * FROM users_login_logs WHERE  user_id IN (1,17,18)

我做的尝试

  1. 检查数据库字段与类属性是否拼写错
    1. 数据库与类对应
  2. 单表分别查询(都没问题)

打开Example 项目 Maven 报错

Could not transfer artifact com.github.braisdom:objsql:pom:1.3 from/to releases (https://oss.sonatype.org/service/local/staging/deploy/maven2): Authentication failed for https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/braisdom/objsql/1.3/objsql-1.3.pom 401 Unauthorized
Could not transfer artifact com.github.braisdom:objsql:pom:1.3 from/to releases (https://oss.sonatype.org/service/local/staging/deploy/maven2): Authentication failed for https://oss.sonatype.org/service/local/staging/deploy/maven2/com/github/braisdom/objsql/1.3/objsql-1.3.pom 401 Unauthorized

关于函数封装的建议

我在做一个项目,里面用了中位数和百分位数的计算,突然发现mysql 不支持,看了clickhouse 和hive 写法不太一样

想想老哥的项目能提供统一API 就好很多了。

java.sql.SQLException: Failed to write Member.id, because setter method require Long, but give a BigDecimal(1)

使用sqlserver保持数据的时候会报错,怎么解决啊
数据模型:

@DomainModel
public class Member {
    @Size(min = 5, max = 20)
    private String no;

    @Queryable
    private String name;

    @Queryable
    private Integer gender;
    private String mobile;
}

数据保存:

Member member = Member.create(newMember, true, true);

报错信息:

java.sql.SQLException: Failed to write Member.id, because setter method require Long, but give a BigDecimal(1)

	at com.github.braisdom.objsql.Databases.sqlBenchmarking(Databases.java:220)
	at com.github.braisdom.objsql.DefaultSQLExecutor.insert(DefaultSQLExecutor.java:49)
	at com.github.braisdom.objsql.DefaultPersistence.lambda$insert$0(DefaultPersistence.java:82)
	at com.github.braisdom.objsql.Databases.execute(Databases.java:193)
	at com.github.braisdom.objsql.DefaultPersistence.insert(DefaultPersistence.java:70)
	at com.github.braisdom.objsql.example.domains.Member.create(Member.java:15)
	at com.github.braisdom.objsql.example.PersistenceExample.createSimpleMemberSkipValidation(PersistenceExample.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: com.github.braisdom.objsql.reflection.ReflectionException: Failed to write Member.id, because setter method require Long, but give a BigDecimal(1)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:142)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:122)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:118)
	at com.github.braisdom.objsql.BeanModelDescriptor.setFieldValue(BeanModelDescriptor.java:279)
	at com.github.braisdom.objsql.BeanModelDescriptor.setGeneratedKey(BeanModelDescriptor.java:135)
	at com.github.braisdom.objsql.DomainModelHandler.handle(DefaultSQLExecutor.java:162)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insert(QueryRunner.java:603)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insert(QueryRunner.java:560)
	at com.github.braisdom.objsql.DefaultSQLExecutor.lambda$insert$1(DefaultSQLExecutor.java:50)
	at com.github.braisdom.objsql.Databases.sqlBenchmarking(Databases.java:206)
	... 29 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.github.braisdom.objsql.reflection.PropertyUtils.lambda$write$3(PropertyUtils.java:132)
	at com.github.braisdom.objsql.reflection.PropertyUtils.withAccessibleObject(PropertyUtils.java:325)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:132)
	... 38 more

HSQLDB 支持有问题

SQL:

INSERT INTO "user" ("id","name","age") VALUES (?,?,?)

异常信息

Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: user
	at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
	at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
	at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
	at org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)
	at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:317)
	at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insert(QueryRunner.java:599)
	... 24 more
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: user
	at org.hsqldb.error.Error.error(Unknown Source)
	at org.hsqldb.error.Error.error(Unknown Source)
	at org.hsqldb.SchemaManager.getTable(Unknown Source)
	at org.hsqldb.ParserDQL.readTableName(Unknown Source)
	at org.hsqldb.ParserDQL.readRangeVariableForDataChange(Unknown Source)
	at org.hsqldb.ParserDML.compileInsertStatement(Unknown Source)
	at org.hsqldb.ParserCommand.compilePart(Unknown Source)
	at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
	at org.hsqldb.Session.compileStatement(Unknown Source)
	at org.hsqldb.StatementManager.compile(Unknown Source)
	at org.hsqldb.Session.execute(Unknown Source)
	... 29 more

生成插入sql语句的建议

现在生成的sql语句,对于没有赋值的属性,插入null
这样对clickhouse数据库不太友好,clickhouse的字段类型为Nullable(typename)类型,才能插入null,Nullable(typename)
如果生成的sql语句,没有插入null值,对clickhouse友好些
1.4.0版本保存数据:

Member newMember = new Member();
newMember.setNo("100000")
        .setName("Pamela")
        .setGender(1)
        .setRegisteredAtWithJoda(DateTime.now())
        .setUpdatedAt(Timestamp.valueOf("2020-10-05 00:00:00"))
        .setMobile("15011112222");

Member member = Member.create(newMember, true);

1.4.0版本生成sql信息:

信息: [109ms] INSERT INTO `members` (`no`,`name`,`gender`,`mobile`,`extended_attributes`,`registered_at`,`updated_at`) 
VALUES (?,?,?,?,?,?,?), with: [100000,Pamela,1,15011112222,null,2020-12-02 19:54:18.157,2020-10-05 00:00:00.0]

com.github.braisdom.objsql.reflection.ReflectionException: Failed to write Member.id, because setter method require Integer, but give a Long(10)

使用mysql保存数据报错
数据模型:

@DomainModel(primaryClass = Integer.class)
public class Member {
    @Size(min = 5, max = 20)
    private String no;

    @Queryable
    private String name;

    @Queryable
    private Integer gender;
    private String mobile;
}

数据保存:

Member member = Member.create(newMember, true, true);

报错信息:

com.github.braisdom.objsql.reflection.ReflectionException: Failed to write Member.id, because setter method require Integer, but give a Long(10)

	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:142)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:122)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:118)
	at com.github.braisdom.objsql.reflection.PropertyUtils.populate(PropertyUtils.java:191)
	at com.github.braisdom.objsql.example.domains.Member.newInstanceFrom(Member.java:15)
	at com.github.braisdom.objsql.example.PersistenceExample.createSimpleMemberCopyFromMap(PersistenceExample.java:68)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.github.braisdom.objsql.reflection.PropertyUtils.lambda$write$3(PropertyUtils.java:132)
	at com.github.braisdom.objsql.reflection.PropertyUtils.withAccessibleObject(PropertyUtils.java:325)
	at com.github.braisdom.objsql.reflection.PropertyUtils.write(PropertyUtils.java:132)
	... 28 more

Update 方法参数问题

Member.update("name = 'Smith => Jackson'", "name = 'Alice'");

这觉得上面的方法是不是可以修改为这样:

String newName = "Smith => Jackson";
String oldName = "Alice";
Member.update("name = ?", "name = ?", newName, oldName);

这样的话可以灵活一点。

通过实体类生成表名时,表名变成了复数问题

场景:

@DomainModel
public class Member {};

Member.Table member = Member.asTable();
Select select = new Select();
select.project(member.no,member.name).from(member).where(member.id.eq(1)).groupBy(member.no,member.name);`

异常:

Table 'objective_sql.members' doesn't exist

PostgreSQL 插件错误(急!!!!)

大佬,我们用PostgreSQL 数据,插入数据报错,帮忙看一下,急!!!!

java.sql.SQLException: Batch entry 0 INSERT INTO "members" ("no","name","gender","mobile","extended_attributes","registered_at","updated_at") VALUES ('200001','Alice',0,'15011112222','null',NULL,NULL)
RETURNING * was aborted: ERROR: column "registered_at" is of type timestamp without time zone but expression is of type character varying
  建议:You will need to rewrite or cast the expression.
  位置:129  Call getNextException to see other errors in the batch. Query: INSERT INTO "members" ("no","name","gender","mobile","extended_attributes","registered_at","updated_at") VALUES (?,?,?,?,?,?,?) Parameters: [[200001, Alice, 0, 15011112222, null, null, null], [200003, Mary, 0, 15011112222, null, null, null], [200004, Denise, 0, 15011112222, null, null, null]]

	at com.github.braisdom.objsql.jdbc.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:369)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insertBatch(QueryRunner.java:687)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insertBatch(QueryRunner.java:643)
	at com.github.braisdom.objsql.DefaultSQLExecutor.lambda$insert$2(DefaultSQLExecutor.java:58)
	at com.github.braisdom.objsql.Databases.sqlBenchmarking(Databases.java:206)
	at com.github.braisdom.objsql.DefaultSQLExecutor.insert(DefaultSQLExecutor.java:57)
	at com.github.braisdom.objsql.DefaultPersistence.lambda$insert$1(DefaultPersistence.java:123)
	at com.github.braisdom.objsql.Databases.execute(Databases.java:193)
	at com.github.braisdom.objsql.DefaultPersistence.insert(DefaultPersistence.java:105)
	at com.github.braisdom.objsql.example.domains.Member.create(Member.java:15)
	at com.github.braisdom.objsql.example.PersistenceExample.createMemberWithArray(PersistenceExample.java:121)
	at com.github.braisdom.objsql.example.PersistenceExample.executeDeleteDenise(PersistenceExample.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)
Caused by: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO "members" ("no","name","gender","mobile","extended_attributes","registered_at","updated_at") VALUES ('200001','Alice',0,'15011112222','null',NULL,NULL)
RETURNING * was aborted: ERROR: column "registered_at" is of type timestamp without time zone but expression is of type character varying
  建议:You will need to rewrite or cast the expression.
  位置:129  Call getNextException to see other errors in the batch.
	at org.postgresql.jdbc.BatchResultHandler.handleCompletion(BatchResultHandler.java:199)
	at org.postgresql.jdbc.PgStatement.internalExecuteBatch(PgStatement.java:855)
	at org.postgresql.jdbc.PgStatement.executeBatch(PgStatement.java:893)
	at org.postgresql.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1644)
	at com.github.braisdom.objsql.jdbc.QueryRunner.insertBatch(QueryRunner.java:685)
	... 33 more

自定义了主键名称后报错

代码:

@DomainModel(primaryFieldName = "id2")
    private static class TestClass {
        private String name;
    }
public void customizedPrimary() {
        TestClass clazz = new TestClass();
        clazz.setId(1);
        Assert.assertEquals(new Integer(1), clazz.id);
    }

错误:

java: 找不到符号
  符号:   方法 setId(int)
  位置: 类型为com.github.braisdom.objsql.apt.DomainModelCodeGeneratorTest.TestClass的变量 clazz

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.