我了解到JNI接口指针(JNIEnv*)仅在当前线程中有效.假设我在本机方法中启动了一个新线程; 它如何异步发送事件到Java方法?由于这个新线程不能有(JNIEnv*)的引用.为(JNIEnv*)存储全局变量显然不起作用?
我一直在尝试以编程方式配置appender,但到目前为止还没有获得成功.我只想配置没有文件的appender,以便它可以将日志发送到控制台或文件.
String PATTERN = "%d [%p|%c|%C{1}] %m%n";
PatternLayout layout = PatternLayout.createLayout(PATTERN, null, null,
null, null, null);
ConsoleAppender console = ConsoleAppender.createAppender(layout, null,
null, "console", "true", "true"); // create appender
AppenderRef appender = AppenderRef.createAppenderRef("console",
"DEBUG", null);
logger = (Logger) LogManager.getLogger(InitLogger.class);
LoggerContext context = logger.getContext();
BaseConfiguration configuration =(BaseConfiguration) context.getConfiguration();
configuration.addAppender(console);
logger.addAppender(configuration.getAppender("console"));
Run Code Online (Sandbox Code Playgroud) 我有三个关系UserDetailshasmany FiledTask和TaskhasMany的实体FiledTask.我想要的只是FiledTask特别的清单User
对于UserDetails:
@OneToMany(mappedBy="user",cascade=CascadeType.ALL)
Collection<FiledTask> filedTasks = new ArrayList<FiledTask>();
Run Code Online (Sandbox Code Playgroud)
对于我的任务
@OneToMany(mappedBy="task")
Collection<FiledTask> filedTasks = new ArrayList<FiledTask>();
Run Code Online (Sandbox Code Playgroud)
和FiledTask看起来像
@ManyToOne
@JoinColumn(nullable = false, name = "taskId")
private Tasks task;
@ManyToOne
@JoinColumn(nullable = false, name = "userId")
private UserDetails user;
Run Code Online (Sandbox Code Playgroud)
我试过了
query = session.createQuery("from Tasks as tasks inner join tasks.filedTasks as files with files.user = :user");
query.setParameter("user", user); //user is UserDetails instance
Run Code Online (Sandbox Code Playgroud)
但我得到的错误子句只能引用驱动表中的列,意味着FiledTask不能用userId进行比较?
with clause can only reference columns in the driving table …Run Code Online (Sandbox Code Playgroud)